0

構文エラーが発生し続け、何が問題なのかわかりません。あらかじめ決められた文字列を呼び出すことはできませんか?

$sqlstring= "INSERT INTO friends (friend_id , friend_email , password , profile_name , date_started , num_of_friends)
                        VALUES (NULL , $email, $password, $name, CURDATE() , 0);";
4

4 に答える 4

2

$email, $password, $nameすべて varchar または string の場合は、単一引用符で囲む必要があります。

$sqlstring= "INSERT INTO friends (friend_id , friend_email , password , 
                                 profile_name , date_started , num_of_friends)
            VALUES (NULL , '$email', '$password', '$name', CURDATE() , 0)";

あなたのクエリは脆弱ですSQL InjectionSQL Injction

于 2012-10-29T11:24:10.747 に答える
1

最後のセミコロンを削除し、値を引用符で囲みます。

$sqlstring= "INSERT INTO friends (friend_id , friend_email , password , profile_name , date_started , num_of_friends)
                    VALUES (NULL , '$email', '$password', '$name', CURDATE() , 0)";
于 2012-10-29T11:24:23.010 に答える
0

更新されたクエリは次のとおりです。

$sqlstring = "INSERT INTO friends (friend_id , friend_email , password , profile_name , date_started , num_of_friends) VALUES (NULL , '$email', '$password', '$name', CURDATE() , 0)";

于 2012-10-29T11:34:19.900 に答える
0

クエリにユーザー入力を受け入れる場合、それを単純に SQL ステートメントに追加するのは非常に危険です。

最新の PHP を使用している場合は、PDO を使用してステートメントを準備します...

$sth = $dbh->prepare('INSERT INTO friends (friend_id , friend_email , password , profile_name , date_started , num_of_friends)
                    VALUES (NULL , ?, ?, ?, CURDATE() , 0)');
$sth->execute(array($email, $password, $name));

または、古い学校に固執したい場合は、それらをエスケープします。

$sqlstring = sprintf('INSERT INTO friends (friend_id , friend_email , password , profile_name , date_started , num_of_friends) VALUES (NULL , %s, %s, %s, CURDATE() , 0)',
    mysql_real_escape_string($email),
    mysql_real_escape_string($password),
    mysql_real_escape_string($name)
);
于 2012-10-29T11:31:06.807 に答える