dポイントプレゼントキャンペーン実施中!

こんにちわ
PHPの独習を始めたばかりなのですが、自分では解決できず質問させて頂くことにしました。
今、いちばんやさしいPHPの教本という参考書を進めています。

ウインドウズ8.1にXAMPP5.6.3をインストールしています。
※参考書に合わせて最新ではないものをインストールしました。

今PHPからデータベースに接続できるようにする。という場面で

<?php
$user = "○○○";
$pass = "○○○";
try{
$dbh = new PDO('mysql:host=localhost;dbname=db1;charset=utf8', $user, $pass);
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$sql = "SELECT * FORM recipes";
$stmt = $dbh->query($sql);
$result = $stmt->fetchAll(PDO::FETCH_ASSOC);
echo "<table>\n";
echo "<tr>\n";
echo "</tr>\n";
echo "</table>\n";
$dbh = null;
} catch (PDOException $e) {
echo "エラー発生: " . htmlspecialchars($e->getMessage(), ENT_QUOTES, 'UTF-8') . "<br>";
die();
}

?>

といったコードをエディタに打ち込み、list.php というファイル名で
c:xampp\htdocs\yasashiiphp\に保存しています。


これをブラウザで
http://localhost/yasashiiphp/list.php
と入力し確認したところ。


エラー発生: SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'FORM recipes' at line 1


といったエラーが出てしまいました。
SQLに文法に誤りがあります。という意味だとはおもいますが、mysqlのmyAdminで操作したのはテーブルを作成してデータを打ち込み保存したくらいで、SQL文をいじった記憶がありません。

参考書でもSQL文(INSERT INTO)でレコード挿入したくらいです。


ネット検索や他の参考書などで解決できないかと自分なりに頑張ってみたのですが
なにがだんだかさっぱりで、なにが問題でどこがいけないのかも検討がつきません。

回答に必要な情報がそろっているかも自分でわかっていないような状態ですが
どうかご教授おねがいします。

よろしくお願いします。

A 回答 (1件)

まず単純なSQL文が間違えております。



$sql = "SELECT * FORM recipes";

FORMはFROMですね。

上記を直すとうまく表示されますか?
    • good
    • 1
この回答へのお礼

narative_hさん
素早い回答ありがとうございます
ご指摘頂いた部分を訂正しましたところ、
上手く表示されました

$sql = "SELECT * FROM recipes";
がsql文だということも知りませんでした。

エディタはdreemweaberを使用しているのですが、
エディタ側で何もエラーになっていませんでしたので、list.phpに間違いがあるとは思ってもみませんでした。

自分の書いているコードの意味が解っていないのも問題ですが
それよりも思い込みって怖いですね。
何回も書き直したのですが、ここは合っていると思っていたので、毎回FORMと書いていました。

単純な間違いですこし恥ずかしいですが、とても勉強になりました。
半日以上このエラーで苦しんだのでとても嬉しいです。

本当にありがとうございました。

お礼日時:2015/09/18 00:53

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