[英]MySQL Tables Not Updating (PDO)
我正在嘗試讓PHP代碼更新用戶表中的地址。
對於初學者來說,使用mysqli並嘗試了預備語句和更簡單的查詢。 從來沒有對預備語句感到好運,因為我發現它們令人困惑,尤其是bind_result()。
我確實在命令本身上使用mysql測試,以確保它可以正常工作。 根據需要進行更新,因此它不是mysql命令本身。 我什至在服務器本地的phpMyAdmin中給了它一個鏡頭。 但是,一旦使用PHP,它就不會更新表中的數據。
立即想到的是確保訪問mysql表的“用戶”具有UPDATE權限,並且確實如此。 因此,它看起來不像是權限問題。 即使我以所有權利和特權使用mysql根目錄,表也不會更新。
我最初的嘗試很簡單:
$query = "UPDATE `UserTable` SET `Address`=\"". $address . "\" WHERE `id`=".$id;
$conn->query($query);
因此,我嘗試了此的預准備語句版本,並且具有相同的效果。 沒有錯誤,但我的表沒有任何變化。
今天,我決定走PDO路線。
try {
$dbh = new PDO("mysql:host=$hostname; dbname=DBDatabase", $db_user, $db_pass);
$query = "UPDATE UserTable SET 'Address'='".$address."' WHERE 'id'=".$id;
echo "Query: ". $query;
$count = $dbh->exec($query);
echo $count . " record changed.";
$dbh = null;
}
catch (PDOException $e) {
echo $e->getMessage();
}
我還嘗試過更改其他字段(也許只是發生在諸如地址之類的VARCHAR字段中)。 因此,我嘗試翻轉Registered標志,並且沒有任何更改可注冊。
您沒有正確使用PDO。 這就是您要形成查詢的方式。
try {
$dbh = new PDO('mysql:host=$hostname; dbname=DBDatabase', $db_user, $db_pass);
$stmt = $dbh->prepare('UPDATE UserTable SET `Address`=:address WHERE `id`=:id');
$stmt->bindParam(':address', $address, PDO::PARAM_STR);
$stmt->bindParam(':id', $id, PDO::PARAM_INT);
$stmt->execute();
}
catch (PDOException $e) {
echo $e->getMessage();
}
這不是您的直接問題,但是准備好的陳述非常容易,它們只需要學習曲線-坦白地說,從個人經驗來看,這比學習PDO更為艱巨。
傳統查詢步驟:
准備的查詢:
$result
數組遍歷結果。 這是一些額外的步驟,但是需要花二十分鍾來概念化它,所有這些都將結合在一起。 PDO的優點是它可以跨不同的數據庫工作,並且非常適合准備的語句。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.