[英]SQL Select doesn't work in PHP, but does on the mysql server itself
我有這個功能
public function populate($id) {
$pdo = new PDOConfig();
$sql = "SELECT * FROM ".$this->table." WHERE `id` = :id";
$q = $pdo->prepare($sql);
$q->execute(array(":id"=>$id));
$resp = $q->fetchAll();
foreach ($resp as $row) {
foreach ($row as $key=>$value) {
if(!is_int($key))
$this->$key = html_entity_decode($value, ENT_QUOTES);
if($value == null) {
$this->$key = null;
}
}
}
$pdo = null;
unset($pdo);
}
哪個有效。 當我嘗試做
$sql = "SELECT * FROM ".$this->table." WHERE `id` = :id";
進入
$sql = "SELECT * FROM ".$this->table." WHERE `id` = :id AND `life` > 0";
壞了 當我在終端中的sql中運行此函數時,一切正常。 該表具有字段壽命,並且可以肯定查詢可以正常工作。 我想念什么?
謝謝
您既沒有在此處發布PHP代碼生成的實際SQL查詢,也沒有發布$id
變量的值。 這使我認為您尚未真正檢查過它們。 因此,當您說“我在終端中的sql中運行此函數,但一切正常”時,您可能是指要創建的SQL查詢。 因此,問題在於您的PHP代碼沒有發送您認為確實發送的查詢和值。
故障排除步驟:
就在$q->execute(array(":id"=>$id));
,檢查$sql
和$id
的值。 您可以使用var_dump()或選擇的調試器。 在第一種情況下,請不要信任您的瀏覽器渲染視圖。 而是使用“ 查看源代碼”菜單。
將這些值與預期結果進行比較。
確保您的PDO子類捕獲錯誤。 最簡單的方法是故意使SQL語法錯誤,例如XSELECT * FROM
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.