0

データベースに情報を送信するためにphpファイルにリンクされている簡単な登録フォームがありますが、試してみるたびにデータがphpMyAdminデータベースに表示されませんか?

<?php

$name = $_POST['name'];
$address = $_POST['address'];
$number = $_POST['number'];
$email = $_POST['email'];
$details = $_POST['details'];

$user="root";
$password="secure";
$database="darrenweircharity";
mysql_connect("localhost",$user,$password);
@mysql_select_db($database) or die ("Unable to select database");

$query = "INSERT INTO registrationdetails(name, address, number, email, details)".
"VALUES('$name', '$address', '$number', '$email', '$details' NOW())";
mysql_query($query);
mysql_close();
?>
4

3 に答える 3

1

mysql_*新しいコードで関数を使用しないでください。それらはもはや維持されておらず、非推奨プロセスが開始されています。赤いボックスがか? 代わりに準備済みステートメントについて学び、 PDOまたはMySQLiを使用してください。この記事は、どちらを決定するのに役立ちます。PDO を選択する場合は、ここに良いチュートリアルがあります。

試してみてください:

$query = "INSERT INTO registrationdetails(name, address, number, email, details)".
         "VALUES('" . $name . "', '" . $address . "', '" . $number . "', '" . $email . "', '" . $details . "');";

NOW()そこにあるべきではないクエリの最後にあります。

また、コードに SQL インジェクションの脆弱性があることにも注意してください (「参考文献」を参照mysql_real_escape_string()) PDO

于 2012-12-06T15:57:50.583 に答える
0

SQL インジェクションの可能性から保護します。

$name = mysql_real_escape_string($name);
$address = mysql_real_escape_string($address);
$number = mysql_real_escape_string($number);
$email = mysql_real_escape_string($email);
$details = mysql_real_escape_string($details);

と置換する:

$query = "
INSERT INTO registrationdetails (`name`, `address`, `number`, `email`, `details`)
VALUES ('$name', '$address', '$number', '$email', '$details')");
于 2012-12-06T15:58:36.213 に答える
0
$query = "
    INSERT INTO registrationdetails (name, address, number, email, details, date_time)
    VALUES ('{$name}', '{$address}', '{$number}', '{$email}', '{$details}', NOW())
";

date_timeを column_name に置き換えます。mysql_real_escape_stringまた、データベースに挿入する前に、送信されたすべての値をエスケープすることを忘れないでください。

于 2012-12-06T16:21:07.483 に答える