Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 为什么我的INSERT语句没有错误地失败?_Php_Mysql_Sql - Fatal编程技术网

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

Php 为什么我的INSERT语句没有错误地失败?,php,mysql,sql,Php,Mysql,Sql,我试图在表中插入一行,但插入该行时不会显示任何错误: $sql="(INSERT INTO as_registration (roll, registrationid, fullname, username, password, dob, courseid, email, gender, phoneno, status) VALUES ('".$roll."','".$regid."','".$name."','".$username."','" .

我试图在表中插入一行,但插入该行时不会显示任何错误:

$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."'))";

此语句中的错误在哪里?

您可以删除双引号和“.”和“(”字符

$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')"

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

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

    $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\u*
连接到数据库,那么我建议您阅读PHP手册中有关
mysql\u*
函数的章节,
他们指出,不建议将此扩展用于编写新代码。相反,他们说,您应该使用或扩展。

以下代码与您发布的代码等效

$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')";
试试看

$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'))";

我甚至看不懂。是PHP还是什么?你的电话号码真的不是字符串吗?!我假设你正在清理所有的值以防止其他地方的SQL注入?你实际上是如何进行插入的?为什么整个语句周围都有paren?为什么要连接所有这些?是的,试图通过PHP插入。我没有parens也有,但没有插入。你可以发布$sql中的内容吗?@Giuliomusarello为你做了格式化。像这样跟踪字符串有点困难。这让我头疼:(我认为你不能调用PHP函数intval()只要像那样把它放在绳子里……我很乐意帮助你user1611964@user1611964既然这个答案解决了您的问题,为什么不选择它作为答案呢?这将帮助未来的用户更优雅、更快速地找到正确的答案:)在哪个MySQL版本中,
intval
是一个有效的函数?如果这个答案起作用,你的服务器一定是由魔法驱动的。
…ob',.intval($c_id['courseid']),“$em…。
真的吗?阿尔弗雷德,关于从查询中删除
intval
的有趣想法,但你怎么会认为是这样的呢?:)我从来没有遇到过这样的问题,有你?只是出于好奇?@llia Rostovtsev;你的建议是一流的,但答案……不是那么多。OP很可能很难理解它。您的假设是OP使用mysql_u*(很有可能);但是,如果OP使用mysqli,您的答案将抛出一个错误:-D谢谢你的笑评。@Sam我当时正竭尽全力,为这个不确定的问题提供了非常确定的答案。Asker可以给我写几行,我会根据所说的内容重新安排我的答案。也谢谢你!;)