INSERT INTO和VALUES不起作用

时间:2013-04-24 08:45:57

标签: php mysql insert

$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进行的调用::它也会正确回来。

我有一些麻烦,需要你帮助......

感谢您的帮助

4 个答案:

答案 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