簡體   English   中英

MySQL PDO無法從表中進行選擇

[英]mySQL PDO not able to SELECT from TABLE

我正在嘗試學習mySQL PDO ..逐一閱讀本教程,並嘗試應用不同的方法來執行簡單的SELECT語句。

這是我最近的嘗試:

<?
include("inc/connPDO.php"); // hostname, username and password and dbName are in here
try {
$dbh = new PDO("mysql:host=$hostname;dbname=$dbName", $username, $password);
/*** echo a message saying we have connected ***/
echo 'Connected to database';   // this outputs appropriately

/*** The SQL SELECT statement ***/
$sql = "SELECT * FROM rofWeapons";
echo '<p>'.$sql;
foreach ($dbh->query($sql) as $row){   // *** line 11 error 
    print $row['weaponName'] .' - '. $row['weaponType'] . '<br />';
}


/*** close the database connection ***/
$dbh = null;    
}
    catch(PDOException $e)
{
    echo $e->getMessage();
}

?>

輸出如下:

連接到數據庫

選擇*來自rofWeapons

警告:第11行的/home/path/to/script/script.php中為foreach()提供的參數無效

我正在學習一個教程.. foreach看起來不錯。 為什么它是無效的論點?

當我在MySQL查詢中輸入“ SELECT * FROM rofWeapons”時,表就很好了。

請幫忙一下嗎?

另一嘗試

如果我嘗試一個PREPARE語句:

/*** The SQL SELECT statement ***/
$weaponType=1;
    $sql = "SELECT * FROM rofWeapons WHERE weaponType=:weaponType";

$stmt = $dbh->prepare($sql);   // *** error Line 12 ***
$stmt->bindValue(':weaponType', $weaponType, PDO::PARAM_INT);
$stmt->execute();
$stmt->setFetchMode(PDO::FETCH_ASSOC); 

while($row = $stmt->fetch()) {
        print $row['weaponName'] .' - '. $row['weaponType'] . '<br />';
    }

我沒有錯。 沒事

這非常令人沮喪。 我究竟做錯了什么?

您尚未獲取要在循環中使用的數組。

更改:

foreach ($dbh->query($sql) as $row){
    //YOUR CODE STUFF
}

至:

foreach ($dbh->query($sql)->fetchAll as $row){
    //YOUR CODE STUFF
}

工作正常。

我不確定這是否可以解決您的問題,但您可能需要嘗試以下方法:

$sql = "SELECT * FROM rofWeapons";
$sth = $dbh->query($sql);
while($row = $sth->fetch(PDO::FETCH_ASSOC))
{
     print $row['weaponName'] .' - '. $row['weaponType'] . '<br />';
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM