gpt4 book ai didi

php - sprintf() 与 mysql_query()

转载 作者:行者123 更新时间:2023-11-29 06:20:27 25 4
gpt4 key购买 nike

使用 sprintf() 格式化代码以使其无错误执行时遇到问题当我运行代码时,出现此错误:解析错误:语法错误,第 16 行/location 中出现意外的 T_VARIABLE

 $query = sprintf('UPDATE `%s` SET `stock` = :amount WHERE `itemname` = '$q'', $tablename);

以上是我的代码中的第 16 行。我假设它与语法相关。

我现在收到以下错误:

fatal error :未捕获异常“PDOException”,消息“SQLSTATE[42000]:语法错误或访问冲突:1065查询为空”/home/content/63/6563663/html/inventory/pg.php:19堆栈跟踪:#0/home/content/63/6563663/html/inventory/pg.php(19): PDOStatement->execute() #1 {main} 抛出/home/content/63/6563663/html/inventory/pg.php 第 19 行

这是我的整个代码块:

 <?php

$u=$_GET["u"];

if ((isset($_POST["MM_update"])) && ($_POST["MM_update"] == "form2")) {
$amount = isset($_POST['amount']) ? $_POST['amount'] : null;
if (null != $amount) {

$user = 'username';
$pass = 'password';
$pdo = new PDO('mysql:localhost', $user, $pass);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
session_start();
$tablename = $_SESSION['MM_Username'];
$query = sprintf('UPDATE %s SET stock= :amount WHERE itemname= '.$u, $tablename);
$stmt = $pdo->prepare($UpdateQuery);
$stmt->bindParam('amount', $amount);
$stmt->execute();
}
}

?>

谢谢,看来我的错误是处理 PDO 执行,而不是查询本身。如果有人对此有任何想法那就太好了。艾伦,我使用了你的方法作为引号,并且还通过 mysql_real_escape_string() 运行查询。

最佳答案

请不要用变量构建 SQL 查询。使用绑定(bind)变量。

参见 http://bobby-tables.com/php.html

关于php - sprintf() 与 mysql_query(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4027143/

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