我有以下SQL查詢:SQL UPDATE查詢通過MySQL工作臺正確執行而不是通過PHP
UPDATE uploads SET UserName='Test2', UserEmail='Test2', UploadCount='4'
WHERE Country = 'Algeria'
當我運行MySQL的通過此查詢工作臺它執行罰款。
我試圖然而,通過網站/ PHP運行它,並在嘗試通過以下方式來執行查詢:
$sql = "UPDATE uploads SET UserName='$user_data[name]', UserEmail='$user_data[email]', UploadCount='$user_data[FilesUploaded]' WHERE Country = '$country'";
echo $sql;
try
{
$pdo = new PDO('mysql:host=localhost; dbname=db01', $username, $password);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$stmt = $pdo->prepare($sql);
$stmt->execute();
# Affected Rows?
echo $stmt->rowCount(); // 1
} catch(PDOException $e) {
echo 'Error: ' . $e->getMessage();
}
SQL查詢正在通過這裏變量建,但是我複製/將$ sql的回聲粘貼到工作臺中以檢查是否沒有語法錯誤,$ sql的回顯是我上面粘貼的內容。
當我通過web應用程序運行它時,我得到0行受影響,並且未更新UPDATE,我在哪裏出錯?
謝謝
更新:PDO的新版本paramatarized:
$sql = "UPDATE uploads SET ";
$sql .="UserName = :name,
UserEmail = :email,
UploadCount = :FilesUploaded";
$sql .=" WHERE Country = '$country'";
try
{
$pdo = new PDO('mysql:host=localhost; dbname=db01', $username, $password);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$stmt = $pdo->prepare($sql);
$stmt->bindParam(":name", $user_data['name']);
$stmt->bindParam(":email", $user_data['email']);
$stmt->bindParam(":FilesUploaded", $user_data['FilesUploaded']);
$stmt->execute();
# Affected Rows?
echo $stmt->rowCount(); // 1
} catch(PDOException $e) {
echo 'Error: ' . $e->getMessage();
}
參數值':)' –
對不起,我不明白,你能澄清? :) – Gideon
http://www.php.net/manual/en/pdo.prepared-statements.php –