gpt4 book ai didi

使用撇号时出现 SQL 错误

转载 作者:行者123 更新时间:2023-11-29 01:15:17 24 4
gpt4 key购买 nike

每当我尝试发布带有撇号的内容时,我都会收到以下错误:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near...

例如,当我尝试发布/使用 INSERT 之类的内容时,例如“我正在努力工作”。这让我出错。如果我写“我正在努力工作”,一切都很好。

代码是:

 $sql="INSERT INTO tb_table (`postcontent`, `userid`, `posttime`) VALUES ('".$_POST[content]."', '".$user_id."', '".time()."')";

有什么解决办法吗?

最佳答案

那是因为您使用撇号来显示 MySQL 字段的每个值的开始和结束位置。如果您在字符串中间放置一个撇号,数据库会突然认为您正试图在三个表字段中放入四个值,或类似的东西。

看起来您正在使用 PHP 向数据库中插入数据,因此我将为您提供几个使用 PHP 提供的方法处理此问题的示例。

使用 mysql_real_escape_string() 修复它的快速方法:

$sql="INSERT INTO tb_table (`postcontent`, `userid`, `posttime`) 
VALUES ('" . mysql_real_escape_string($_POST['content']) . "',
'" . mysql_real_escape_string($user_id) . "',
".time().")";

更好的方法是使用 prepared statements :

$db = // your mysqli() connection

$sql="INSERT INTO tb_table (`postcontent`, `userid`, `posttime`)
VALUES (?, ?, ?)";

if ($stmt = $db->prepare($sql))
{
$stmt->bind_param("ssi", $_POST['content'], $user_id, time());
$stmt->execute();
$stmt->close();
}

附言time() 周围不需要单引号 - 这是一个数字,按原样插入是安全的。

关于使用撇号时出现 SQL 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2206326/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com