2012-05-11 37 views
0

我有这样的功能:插入错误在MySQL/PHP

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); 
} 

而且我得到这个错误:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 2

哪里出错点?我怎么知道错误在哪里?

+0

谢谢。现在它的工作 –

回答

3

您错过了VALUES (条款中的关闭)。一般来说,在将它传递给一个变量(您可以将其输出用于调试目的,如此)之前,将它传递给mysql_query更容易。

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

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。

+0

它给我什么mysqli?那些准备好的陈述? –

+0

@DmitryMakovetskiyd是的,他们是。 http://php.net/manual/en/book.mysqli.php和http://www.php.net/manual/en/book.pdo.php – Leri

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()); 
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, 
)); 

免责声明没有测试这一点,但它应该给你一个很好的想法:)

+0

+1推荐PDO – itachi