您的sql语法有错误

lrl1mhuk  于 2021-06-20  发布在  Mysql
关注(0)|答案(1)|浏览(407)

为什么我总是在hostgator中出错,当我尝试更新数据库中的这个ga字段时,在textarea中插入这个代码时会出错

_gaq.push(['_setCustomVar',1, 'Status', 'Logged In']);
_gaq.push(['_trackEvent', 'Custom', 'PageLoad', 'Setting Logged In State',0,true]);
<textarea name="ga"></textarea>

$name = $_POST['name'];
$ga = trim($_POST['ga']);

$req = "UPDATE `con` SET `name` = '".$name."', `ga` = '".$ga."'");
if (mysqli_query($con, $req)) {
  echo "success"
}

sql语法有错误;查看与您的mysql服务器版本对应的手册,以了解在“\u setcustomvar”,1,“status”,“logged in”])附近使用的正确语法_gaq.push([''\trackevent','自定义','在第1行)
如果我移除 ga ='“%$ga.”我的数据库更新,但如果添加此代码,它会给出错误,我有hostgator,它在localhost工作良好
数据库中ga的类型是文本。

xxhby3vn

xxhby3vn1#

准备好的报表是解决这一问题的一站式方法。你的代码应该是:

$name = trim($_POST['name']);
$ga = trim($_POST['ga']);
$some_value = 'some_value'; //This is just the imaginary value for demonstration

$req = "UPDATE `con` SET `name` = ?, `ga` = ? WHERE column_name = ?";
$stmt = $mysqli->prepare($req);
$stmt->bind_param('sss', $name, $ga, $some_value);
$stmt->execute();

你总是想用 WHEREUPDATE 查询。如果你不使用 WHERE 子句中,更改将应用于所有记录。我想你知道sql注入,臭名昭著的攻击!
可用于修复代码问题的另一种方法是 mysqli_real_escape_string() . 例如,

$name = mysqli_real_escape_string($con, trim($_POST['name']));
$ga = mysqli_real_escape_string($con, trim($_POST['ga']));

但一定要像我上面所说的那样使用事先准备好的语句。

相关问题