我有下表:
$sql = "CREATE TABLE received_queries
(
sender_screen_name varchar(50),
text varchar(150)
)";我使用以下SQL语句将值存储在表中
$sql = "INSERT INTO received_queries VALUES ('$sender_screen_name', '$text')";现在,我试图将以下字符串存储为“text”。
还有一句话:脑海中的棉毛,睡不着的感觉是无法治愈的,我需要一些咖啡。
我得到以下错误消息:
错误:您的SQL语法出现了错误;请检查与您的MySQL服务器版本对应的手册,以获得正确的语法,以便使用接近“无法治愈”的语法;我需要一些咖啡。在第1行
我想这一定是个很常见的问题。我该怎么解决呢?
发布于 2010-04-19 07:25:17
我建议使用预先准备好的语句(使用mysqli或pdo)而不是转义。
发布于 2010-04-19 07:29:12
请注意,将这样的SQL查询组合在一起可能会带来安全风险.
一个更好的方法是使用准备语句。这基本上意味着将某些占位符放到实际值(如$sender_screen_name和$text)中的SQL中。
我搜索了'net‘并提出了以下代码片段,展示了如何在PHP中完成准备好的语句(如果这可能不是最好的PHP,我通常不会用这种语言编写任何程序--但我想它可以作为一个合理的起点):
$dbSelect = $objDb->prepare("INSERT INTO received_queries VALUES (:ssn, :text");
$dbSelect->bindParam('ssn', $sender_screen_name);
$dbSelect->bindParam('text', $text);通过将查询作为预先准备好的语句执行,您不需要担心自己转义字符串。PHP和RDBMS将自动为您处理这一问题。
发布于 2010-04-19 07:21:05
您可以使用mysql_real_escape_string
https://stackoverflow.com/questions/2665744
复制相似问题