当插入的值仅包含诸如“728011955”之类的数字时,它完全正常,但如果值包含任何字母,例如“1lKw7Rcc1iM8WB9c”,则无法插入。
以下是失败的查询。
$query = ("INSERT INTO $tbl_name VALUES ($key, $timestamp, $use)");
mysqlerror()输出如下。
Unknown column '1lKw7Rcc1iM8WB9c' in 'field list'
帮助! :)
答案 0 :(得分:7)
你必须引用你的参数。
$query = ("INSERT INTO $tbl_name VALUES ('$key', '$timestamp', '$use')");
但是你读到了SQL注入攻击,因为如果这些变量来自你的程序之外,这个查询很可能容易受到攻击。
答案 1 :(得分:0)
不要挑剔,但为什么外括号?也就是说,这样做也会更容易阅读:
$query = "INSERT INTO $tbl_name VALUES ('$key', '$timestamp', '$use')";
对于您的错误,不应引用数值(例如,可能是您的键和时间戳值),表名也是如此。另一方面,字符串类型需要引号。
虽然其他人提到参数绑定和预处理语句以使您的SQL更安全,但另一种可能性是use sprintf。