私は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();
}
?>
出力は次のとおりです。
データベースに接続しました
SELECT * FROM rofWeapons
警告: 11 行目の /home/path/to/script/script.php の foreach() に無効な引数が指定されました
私はチュートリアルに従っています.. foreachはよさそうです。なぜそれは無効な引数ですか?
"SELECT * FROM rofWeapons" を mySQL クエリに入力すると、テーブルは問題なく表示されます。
少し助けてください?
別の試み
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 />';
}
エラーは発生しません。何もありません。
これは非常にイライラします。私は何を間違っていますか?