$sql = ("INSERT INTO `Lcode` (lid, sid)
VALUES (".$a.", ".$b.")"
);
以上 lid = varchar和$ a = vib (在这种情况下) 上面的 sid = int和$ b = 3 (在这种情况下再次)
但它似乎没有将其插入数据库?
我已将连接检查到服务器,这没关系。
我可以使用以下代码进行更新:
$sql = ("INSERT INTO Lcode SET lid='".$b."'");
和类似的UPDATE。
我真的希望你能帮助我。
更多信息
$a = strtolower ( $resa['lid'] );
$b = strtolower ( $resb );
$ resa ['lid'] =我从mysql服务器获取的一个变量::当尝试回显$ a时它正确返回
$ resb是我用$ _GET对url进行的调用::它也会正确回来。
我有一些麻烦,需要你帮助......
感谢您的帮助
答案 0 :(得分:1)
要直接回答您的问题,您需要使用单引号包装lid
的值,因为它是字符串文字。
$a = strtolower($resa['lid']);
$b = strtolower($resb);
$sql = "INSERT INTO Lcode (lid, sid) VALUES ('$a', $b)";
作为旁注,如果变量的值( s )来自外部,则查询易受SQL Injection
攻击。请查看下面的文章,了解如何防止它。通过使用PreparedStatements
,您可以摆脱在值周围使用单引号。
答案 1 :(得分:1)
首先是缺少单引号,如下所示:
$sql = "INSERT INTO `tbl_name` (`field1`, `field2`) VALUES ('$a','$b')";
尝试在将整个查询发送到服务器之前对其进行回显。还可以使用sql server中的错误信息来解决这个问题,例如使用mysqli:
echo "Error message: %s\n" . mysqli_error();
答案 2 :(得分:0)
您忘记引用字符串值。这样:
$sql = ("INSERT INTO `Lcode` (lid, sid)
VALUES (".$a.", ".$b.")"
);
应该是:
$sql = ("INSERT INTO `Lcode` (lid, sid)
VALUES ('".$a."', '".$b."')"
);
要找出这些问题,在执行它之前打印出整个查询非常有用,它应该为您提供有关可能的语法错误的线索。
答案 3 :(得分:0)
尝试这样更容易,
INSERT INTO `table_name` SET `lid` = $somevalue, `sid` = $somevalue2