提前道歉,因爲我真的不確定如何提出這個問題,所以如果你需要知道任何事情,請評論而不是downvote,我會編輯。爲什麼我收到PDO查詢錯誤?
我在我的主頁上有傳情鏈接,點擊打開窗口時會顯示整篇文章。我目前正在將我的MySQL代碼轉換爲PDO,並且稍微卡住了。
在MySQL我以前做以下(在這裏,$ foo_query是從第一頁查詢):
$id = $_GET['id'];
$sql = "SELECT id, postdate, title, body FROM FooBarTable WHERE id = $id";
if ($foo_query = mysql_query($sql)) {
$r = mysql_fetch_assoc($foo_query);
$title = $r["title"];
$body = $r["body"];
}
這很容易理解我。我一直在試圖用我所知道的來轉換它,結果我知道的並不多。到目前爲止,我有以下幾點:
$id = $_GET['id'];
$sql = $DBH->prepare("SELECT id, postdate, title, body FROM FooBarTable WHERE id = :id OR id = $id");
$sql->bindParam(':id', $_REQUEST['id'], PDO::PARAM_INT);
if ($foo_query = $DBH->query($sql)) {
$r->setFetchMode(PDO::FETCH_ASSOC);
$r = $foo_query->fetch();
$title = $r["title"];
$body = $r["body"];
}
$sql->execute();
這就提出了一個錯誤「PDO ::查詢()預計參數1是字符串」。這是'if'行。
我是否已經正確書寫了任何PDO?我需要從這裏做什麼?一位朋友最近教我的MySQL,但他不知道PDO在所有這意味着我可以不問他的意見(不是所有的有用......)
你需要在'$ sql'運行查詢,而不是直接對數據庫句柄。 – andrewsi
如果您只是要將用戶輸入直接注入到它們中,您爲什麼還要使用準備好的語句? 'OR id = $ id'不應該在那裏...如果你想在那裏出於某種原因,把它作爲一個參數,並像其他':id'那樣綁定它。 – cHao