0

私はこの関数を持っています:

   public static function insert_user($user)
{
    $con = mysql_connect("localhost","root","") or die(mysql_error());
    mysql_select_db("speakom",$con) or die(mysql_error());
    mysql_query("INSERT INTO user (user_ip,user_name,full_name,email_address,password,gender,birthday,banned,role,country) 
        VALUES('".$user->ip."','".$user->name."','".$user->full_name."','".$user->email."','".$user->password."',".$user->gender.",'".$user->birthday."',".$user->banned.",".$user->role.",'".$user->country."'") or die(mysql_error());
    mysql_close($con);
}

そして、私はこのエラーを受け取ります:

SQL構文にエラーがあります。2行目の''の近くで使用する正しい構文については、MySQLサーバーのバージョンに対応するマニュアルを確認してください。

エラーはどこを指しますか?エラーがどこにあるかをどうやって知ることができますか?

4

5 に答える 5

3

条項の締めくくり)がありません。VALUES (一般に、SQLをに渡す前に、SQLを変数(このようなデバッグ目的で出力できます)に割り当てる方が簡単ですmysql_query

于 2012-05-11T11:54:49.807 に答える
2

怒鳴る代わりに、PDOとプリペアドステートメントを使用する必要があります。PDOスタイルの答えは次のとおりです。

$con = new PDO('mysql:host=localhost;dbname=speakom', 'root', ''); // optionally add encoding options
$con->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // enable exception throwing
$stmt = $db->prepare('INSERT INTO user (user_ip, user_name, full_name, email_address, password, gender, birthday, banned, role, country) 
    VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)');
$stmt->execute(array(
    $user->ip, $user->name, $user->full_name, $user->email, $user->password, 
    $user->gender, $user->birthday, $user->banned, $user->role, $user->country,
));

免責事項はこれをテストしませんでしたが、それはあなたに良い考えを与えるはずです:)

于 2012-05-11T12:03:09.273 に答える
1

走りますか

echo "INSERT INTO user (user_ip,user_name,full_name,email_address,password,gender,birthday,banned,role,country)      VALUES('".$user->ip."','".$user->name."','".$user->full_name."','".$user->email."','".$user->password."',".$user->gender.",'".$user->birthday."',".$user->banned.",".$user->role.",'".$user->country."'";

代わりに`user`を使用することをお勧めしますuser

于 2012-05-11T11:55:43.030 に答える
1
VALUES('".$user->ip."','".$user->name."','".$user->full_name."','".$user->email."','".$user->password."',".$user->gender.",'".$user->birthday."',".$user->banned.",".$user->role.",'".$user->country."'"

あなたは)最後に行方不明です。ちなみに、PDOまたはmysqliを使用してください。

于 2012-05-11T11:56:34.107 に答える
1

挿入する値の一部が引用符で囲まれておらず、の終了を見逃し)ましたVALUES。これを試して

mysql_query("INSERT INTO user (user_ip,user_name,full_name,email_address,password,gender,birthday,banned,role,country) 
    VALUES('$user->ip', '$user->name','$user->full_name', '$user->email', '$user->password', '$user->gender', '$user->birthday', '$user->banned', '$user->role', '$user->country')") or die(mysql_error());
于 2012-05-11T11:56:39.443 に答える