2017-05-30 92 views
-1

在我的pdo腳本中,查詢我的數據庫以在我的本地計算機中爲我提供數據庫中的所有用戶,但是我看到的只有「SQLSTATE [HY000] :一般錯誤「SQLSTATE [HY000]:一般錯誤和數組(0){}

這是我的腳本;

<?php 
ini_set('display_errors','on'); 
require_once('connect.php'); 

try{ 

$username='charlyo'; 
$con=$connect->query('select * from users where username=:username'); 
var_dump($con->fetchAll()); 
} 
catch(PDOException $e){ 
    echo $e->getMessage(); 

} 

?> 

雖然故障排除它,我試圖使用準備好的語句。我現在得到「數組(0){}」,而沒有返回任何數組,而我使用fetchAll方法。

這裏是準備好的聲明中的第二個腳本:

<?php 
ini_set('display_errors','on'); 
require_once('connect.php'); 

try{ 

$username='charlyo'; 
$con=$connect->prepare('select * from users where username=:username'); 
$con->bindParam(':username',$username); 
$con->execute(); 
var_dump($con->fetchAll()); 
} 
catch(PDOException $e){ 
    echo $e->getMessage(); 

} 

?> 
+0

'query'不佔位符,您還需要使用佔位符綁定。 – chris85

+0

您從兩個腳本或第一個腳本中獲取錯誤? – chris85

+0

在第一個查詢中使用'prepare'。在第二個查詢中爲第一個查詢 – Akintunde007

回答

1

從查詢中刪除use charles;。我不確定你爲什麼使用它,但從查詢和檢查中取消它。

+0

謝謝@swapgs,它只是工作,謝謝很多兄弟 – charlyo

2

您還應該發佈文件connect.php的內容,因此我們可以確定您是如何實例化PDO對象的(請確保刪除密碼)。

默認情況下,PDO不支持堆疊查詢(由;分隔的多個查詢),但必須啓用仿真模式(PDO::ATTR_EMULATE_PREPARES),但在您的情況下並不需要它。

爲了讓您的第二個示例正常工作,您應該刪除use charles;部分,並確保在提供給PDO構造函數的DSN中傳遞dbname=charles

+0

我已經從我的查詢中刪除「使用charles」,我已經改變了dbname = charles但沒有任何改變,它仍然顯示「array(0){},我還應該做什麼」這是第二個令我感到困擾的例子,那就是準備好的文字。我解決了第一個例子中查詢語句的一般錯誤。 – charlyo

+0

@charlyo:確保至少有一條記錄的用戶名是'charlyo'。在寫這篇評論之前,我在家裏嘗試了第二個例子,並且按預期工作。 – 2017-05-30 13:45:10

+0

是的,我在我的數據庫中有用戶名charlyo,不明白髮生了什麼,更多的幫助PLZ,我真的需要它 – charlyo

相關問題