電子書籍の厳選無料作品が豊富!

PCも、プログラミングも超初心者です。調べながらコツコツ独学中。

try{
$dbh = new PDO('mysql:host=localhost; db_name=sample1_db, $db_user, $db_pass');
print '接続に成功しました';

//SELECT文を変数に格納
$sql= "SELECT * FROM 'aisatsu'";
//SQLステートメントを実行し、結果を変数に格納
$stmt = $dbh->query($sql);
//foreach文で配列の中身を1行ずつ出力
foreach ($stmt as $row) {
//データベースのフィールド名で出力
echo $row['id'].':'.$row['text'].':'.$row['number'];
//改行を入れる
echo '<br>';
}
}catch (PDOException $e){
print "接続エラー:{$e->getMessage()}";
}
$sql = null;


結果
接続に成功しました
しかし、Warning:が出てしまい、foreach()にエラーがあると…
調べながら入力したのですが、エラーから抜け出せません。
何が間違っているのでしょう?mysqlでの設定があるの?

教えてください、よろしくお願いします。

A 回答 (2件)

こうです



try{
$dbh = new PDO('mysql:host=localhost; db_name=sample1_db, $db_user, $db_pass');
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$sql= "SELECT * FROM `aisatsu`";
$stmt = $dbh->query($sql);

whilef($row=$stmt->fetch(PDO::FETCH_ASSOC)){
echo $row['id'].':'.$row['text'].':'.$row['number'].'<br>';
}
}catch (PDOException $e){
print "接続エラー:{$e->getMessage()}";
}

・テーブル名はシングルクォートで囲ってはダメ
・エラーを拾いたいならATTR_ERRMODEを設定
・ステートメントは回せないfetch(もしくはfetchAll)する
    • good
    • 1
この回答へのお礼

回答ありがとうございます。
「'」と「`」の違いが判ってませんでした。気づかせて頂いて有難うございます。
ただ、今度はechoの行のエラーが出てしまいました。

お礼日時:2018/10/02 12:07

あ、「whilef」は「whle」の間違いです。


これをなおしてもエラーがでるなら、具体的なエラーを提示ください
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
whileに直しました。
それと、db_name=sample1_dbのところがdbname=sample1_dbに直したら、ちゃんとテーブルが表示できました。有難うございました。
またコツコツ頑張ります。

お礼日時:2018/10/02 16:31

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!