2017-11-01 18 views
0

私はかなりphpの新しいです、私のデータベースクラスのためには、PHPのフォームを使用してデータを挿入する必要があります。 MySQLワークベンチ、MAMP、phpmyadminを使用しています。私の質問は、どのように私は下にアタッチされているPHPスクリプトと対話するフォームを取得することです。 $ valueに格付けされたタイトルボックスの値を取得するにはどうすればいいですか?$ value2に格付けします。これらはサーバー上の2つの別々のファイルで、インデックスにアクセスしてPHPスクリプトを選択すると500エラーが返されます。それは現時点では機能しません。データベースPHPスクリプト、テーブルにデータを挿入

db名が正しいことと、ユーザーとパスワードが正しいことを確認しました。

<form action="form1.php" method="post"/> 
 
<p>Enter Movie Title: <input type="text" name="title"/></p> 
 
<p>Enter Movie Rating(G,PG,PG-13,R): <input type="text" name="rating"/></p> 
 
<p>Enter Movie Runtime in minutes: <input type="text" name="Runtime"/></p> 
 
<p>Enter IMDB Movie Rating(0-10.0): <input type="text" name="movie_rating"/></p> 
 
<p>Enter Movie Release date(YYYY-MM-DD): <input type="text" name="release_date"/></p> 
 
<input type="submit" value="Submit"/> 
 
</form>

編集:ただ、MAMPを持っていることが判明添付 画像は、これは単なるテキストボックスを作る列ヘッダ enter image description here

<?php 
define('DB_NAME', 'movie_database'); 
define('DB_USER', 'root'); 
define('DB_PASSWORD', 'root'); 
define('DB_HOST', 'localhost:3036'); 
$link = mysql_connect(DB_HOST, DB_USER, DB_PASSWORD); 
if (!$link) { 
die('Could not connect: ' . mysql_error()); 
} 

$db_selected = mysql_select_db(DB_NAME, $link); 

if (!$db_selected) { 
die('Can\'t use ' . DB_NAME . ': ' . mysql_error()); 
} 


$value = $_POST['title']; 
$value2 = $_POST['rating']; 
$value3 = $_POST['Runtime']; 
$value4 = $_POST['movie_rating']; 
$value5 = $_POST['release_date']; 

$sql = "INSERT INTO movies (title, rating, Runtime, movie_rating, 
release_date) VALUES ('$value', '$value2', '$value3','$value4','$value5')"; 
echo "Inserted correctly!" 
if (!mysql_query($sql)) { 
die('Error: ' . mysql_error()); 
} 

mysql_close(); 
?> 

と私の映画の表ですエラーログ。 PHP致命的なエラー:未知のエラー:E:\ MAMP \ MAMP \ htdocs \ forms.phpの未定義関数mysql_connect()を呼び出す:8 スタックトレース:

0 {メイン} Eでスロー

:\ MAMP \ MAMP \ htdocsに\ forms.phpラインに8

+0

だけヒント:MAMPでは '/アプリケーション/ MAMP/logs'に行き、' apache_error.log'と 'php_error.log'を確認することができます。あなたの '$値'が文字列に適切に入力されていない可能性が最も高いと思われます –

+0

MAMPがそれを知っていたのか分かりませんでした。 phperrorログに次のエラーがあります。PHP構文解析エラー:構文エラー、予期しない 'if'(T_IF)、 '、'または ';' E文:\ MAMP \ MAMP \ htdocs \ forms.php 29行目 –

+0

文法エラーを見つけたばかりです - 'echo 'が正しく挿入されました!"あなたの500のエラーを引き起こす可能性が最も高いのはどれですか? –

答えて

1

は、だからあなたは(あなたが今修正しました)欠落している;で構文エラーがあったが、2つの問題が依然として存在している:あなたのDB_HOST変数が正しく設定されていない

、それだけで次のようになります。

ポート番号を必要としないとMAMPであなたが最も可能性の高いローカルホストのIPを使用する必要が
define('DB_HOST', '127.0.0.1'); 

:127.0.0.1

あなたの第二のプロblemは、あなたが値を連結しているとき、それは次のようになります、あなたはINSERTクエリを作成している方法です。

$sql = "INSERT INTO movies (title, rating, Runtime, movie_rating, release_date) 
VALUES ('".$value."', '".$value2."', '".$value3."','".$value4."','".$value5."')"; 

PHP MySQLだから、PHP 5.5.0

以降廃止されていることを言って以下のようなPHP MySQLiを使用してみてください:

<?php 
$databaseName = 'movie_database'; 
$databaseUser = 'root'; 
$databasePassword = 'root'; 
$databaseHost = '127.0.0.1'; 

$conn = new mysqli($databaseHost, $databaseUser, $databasePassword, $databasePassword); 

// Check connection 
if ($conn->connect_error) { 
    die("Connection failed: " . $conn->connect_error); 
} 

echo "Connected successfully"; 

// Note* This is basic sanitizing but you can be more careful with this 
$value = mysql_real_escape_string($_POST['title']); 
$value2 = mysql_real_escape_string($_POST['rating']); 
$value3 = mysql_real_escape_string($_POST['Runtime']); 
$value4 = mysql_real_escape_string($_POST['movie_rating']); 
$value5 = mysql_real_escape_string($_POST['release_date']); 

// Concatenate the $values into the string 
$sql = "INSERT INTO movies (title, rating, Runtime, movie_rating, release_date) 
    VALUES ('".$value."', '".$value2."', '".$value3."','".$value4."','".$value5."')"; 

if ($conn->query($sql) === TRUE) { 
    echo "New record created successfully"; 
} else { 
    echo "Error: " . $sql . "<br>" . $conn->error; 
} 

$conn->close(); 

?> 
0

一つの方法は、再び '停止' と 'スタート' の文字列に次のようになります。

$sql = "INSERT INTO movies (title, rating, Runtime, movie_rating, 
release_date) VALUES ('".$value."', '".$value2."', '".$value3."','".$value4."','".$value5."')"; 

何のであなたは今、varの背後にある実際の値の代わりに "$ value"を挿入するだけですiable。

-1

あなたはちょうどエコーステートメントの後にセミコロン(;)を忘れて、これがあなたを助けることを願っています。

$value = $_POST['title']; 
$value2 = $_POST['rating']; 
$value3 = $_POST['Runtime']; 
$value4 = $_POST['movie_rating']; 
$value5 = $_POST['release_date']; 

$sql = "INSERT INTO movies (title, rating, Runtime, movie_rating, 
release_date) VALUES ('$value', '$value2', '$value3','$value4','$value5')"; 
//forget ';' after echo 
echo "Inserted correctly!"; 
if (!mysql_query($sql)) { 
die('Error: ' . mysql_error()); 
} 

mysql_close(); 
?> 
関連する問題