格式時遇到問題我的代碼使用的sprintf()沒有錯誤執行當我運行代碼,我得到這個錯誤:解析錯誤:語法錯誤,意想不到的T_VARIABLE在/位置上線16的sprintf()對戰的mysql_query()
$query = sprintf('UPDATE `%s` SET `stock` = :amount WHERE `itemname` = '$q'', $tablename);
上面是我的代碼中的第16行。我假設它是語法相關的。
我現在收到以下錯誤:
致命錯誤:未捕獲的異常「PDOException」有消息「SQLSTATE [42000]:語法錯誤或訪問衝突:1065查詢爲空」在/ home /內容/ 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()運行查詢。
你有一個語法錯誤:您需要逃避你的單引號。'\''$ q'從哪裏來?這是正確的'mysql_real_escape_string()'編? – 2010-10-26 19:15:53
$ q只是我的代碼塊中定義的一個簡單字符串。 – Parker 2010-10-26 19:18:11
我很好奇,看看錶名是否被反引號內的單引號括起來。你能否在執行前更新問題以包含查詢打印輸出? – 2010-10-26 19:21:25