gpt4 book ai didi

PHP MySQL UPDATE 语句不工作

转载 作者:可可西里 更新时间:2023-11-01 08:06:02 24 4
gpt4 key购买 nike

我有一个带有表 (opendpu) 的 MySQL 数据库,该表包含多个列,包括标题为“ECRNUM”和“PE_REQUIRED”的列。

我只是想通过指定一些值来测试这个更新语句。我收到此错误:

Array ( [0] => 42000 [1] => 1064 [2] => 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 'DOE WHERE ECRNUM = 81308' at line 1 )

在我的一生中,我无法弄清楚这里出了什么问题。谁能帮忙?

<?php
require ('config.php');
$ecrno = '81308';
$pe_required = 'JOHN DOE';

while (true) {
try {
$db = new PDO($dsn, $uname, $pword);
$db->exec( "SET CHARACTER SET utf8" );
$db->setAttribute( PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC );
$db->setAttribute( PDO::ATTR_PERSISTENT, true );
break;
}
catch (Exception $e) {
$db = null;
$counter++;
if ($counter == $limit)
throw $e;
}
}

$stmt = $db->prepare("UPDATE opendpu SET PE_REQUIRED = $pe_required WHERE ECRNUM = $ecrno");
$stmt->execute() or die(print_r($stmt->errorInfo(), true));

?>

.

最佳答案

+1 用于使用准备好的语句...但是(这是一个很大的 BUT):

你不应该在没有bind_param 的情况下使用准备好的语句,因为这会让你对 SQL 注入(inject)敞开大门,并抵消准备语句的好处。

$stmt = $db->prepare("UPDATE opendpu SET PE_REQUIRED=? WHERE ECRNUM=?");
$stmt->bind_param('si', $pe_required, $ecrno);
$stmt->execute() or die(print_r($stmt->errorInfo(), true));

关于PHP MySQL UPDATE 语句不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19946112/

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