0
所以我有以下代碼,主要是從php.net's SQLite3 prepare statement page的例子改編而來。準備好的陳述問題/ bindValue
$stmt = $db->prepare("INSERT INTO users (accesstoken, authed, ckey, staff) VALUES (':password', 'false', ':ckey' ,'true');");
$stmt->bindValue(':ckey',$_POST["ckey"]);
$hashedpw = password_hash($veri_password, PASSWORD_DEFAULT);
$stmt->bindValue(':password',$hashedpw);
$result = $stmt->execute();
我想它會工作,但是當我手動檢查數據庫中我看到這一點:
:ckey, :password, false, false
作爲插入的行。 我似乎無法修復它,我嘗試刪除它周圍的引號,而不是拋出一個錯誤。我交換了引用類型,並且得到了未定義的列或其他錯誤。
下面是代碼的剪斷之前正確的:
$stmt = $db->prepare("select * from `users` WHERE ckey = :ckey");
$stmt->bindValue(":ckey",$_POST["ckey"]);
$result = $stmt->execute();
這工作得很好但它是一個選擇查詢,而不是插入和它只有綁定一個值。我已經看了至少10-15個相關的問題,仍然無法解決它,一個建議使用'
而不是"
,但這並沒有解決它的另一個建議使用?
而不是:ckey
,並留下了問號我的數據庫(如何適合),我仍然無法解決它。
嘗試刪除周圍的單引號':在查詢ckey':password'和'本身。 – Cfreak
它仍然存在,我剛剛檢查了我的服務器日誌中的提示,並且我將重新安裝我的測試服務器並再次測試我的代碼,因爲我覺得有什麼不對,而其他人似乎也有同樣的問題。 – Codingale
好吧,重新安裝後,我的代碼有點破碎,但現在它刪除引號後正常工作..我認爲我的安裝已損壞或什麼。 – Codingale