为什么我的INSERT语句失败而没有错误?

时间:2012-09-08 16:22:11

标签: php mysql sql

我试图在表格中插入一行但是没有显示任何错误就插入了行:

$sql="(INSERT INTO as_registration (roll, registrationid, fullname, username, 
       password, dob, courseid, email, gender, phoneno, status) 
       VALUES ('".$roll."','".$regid."','".$name."','".$username."','"
       .$pwd."','".$dob."',".intval($c_id['courseid']).",'".$email."','"
       .$gender."',".$phone.",'".$status."'))";

此声明中的错误在哪里?

5 个答案:

答案 0 :(得分:1)

您不能在开头和结尾使用括号,请尝试使用此查询:

    $sql = "
INSERT INTO 
    as_registration (roll, registrationid, fullname, username, password, dob, courseid, email, gender, phoneno, status ) 
VALUES 
    ('". mysql_real_escape_string($roll) ."','". mysql_real_escape_string($regid) ."','" 
       . mysql_real_escape_string($name) ."','". mysql_real_escape_string($username) ."','"
       . mysql_real_escape_string($pwd) ."','". mysql_real_escape_string($dob) ."',"
       . mysql_real_escape_string(intval($c_id['courseid'])) .",'". mysql_real_escape_string($email) ."','"
       . mysql_real_escape_string($gender) ."','". mysql_real_escape_string($phone) ."','". mysql_real_escape_string($status) ."')";

如果你像这样使用你的代码那么它就容易受到SQL注入攻击。我强烈建议您在将数据插入数据库时​​使用mysql_real_escape_string以防止SQL injections,作为快速解决方案或更好地使用PDOMySQLi

此外,如果您使用mysql_*连接到您的数据库,那么我建议您阅读mysql_*函数的PHP手册章节, 他们指出,建议不要使用此扩展名来编写新代码。相反,他们说,您应该使用MySQLiPDO_MySQL扩展名。

答案 1 :(得分:0)

删除第一个和最后一个括号“(”和“)”。

答案 2 :(得分:0)

以下代码等同于您发布的代码。

$sql="INSERT INTO as_registration (roll, registrationid, fullname, username, password, dob, courseid, email, gender, phoneno, status )
      VALUES ('$roll', '$regid', '$name', '$username', '$pwd', '$dob', ".intval($c_id['courseid']).", '$email', '$gender', $phone, '$status')";

Documentation about double-quoted strings

答案 3 :(得分:0)

试;

$courceid = intval($c_id['courseid']);
$sql="(INSERT INTO as_registration
(roll, registrationid, fullname, username, password, dob, courseid, email, gender, phoneno, status )
VALUES
('$roll','$regid','$name','$username','$pwd','$dob','$courceid','$email','$gender','$phone','$status'))";

答案 4 :(得分:-3)

您可以删除double quotes和'。'和'('caracter

$sql="INSERT INTO as_registration (roll, registrationid, fullname, username, password, dob, courseid, email, gender, phoneno, status ) VALUES ('$roll','$regid','$name','$username','$pwd','$dob',{c_id['courseid']} ,'$email','$gender',$phone,'$status')"