PHPでの検索機能実装について(フレームワーク無し
PHP初心者です。
現在、PHPにてDBからアクセスし、DBの検索を実装するプログラムを作成しております。
参考HPを元に下記のプログラムを作成したのですが、参考HPのコードではフレームワークが組み込まれており、
フレームワークを組んでいない私のコードではエラーが発生してしまいます。
エラー内容:
Warning: mysql_fetch_array() expects parameter 1 to be resource, (省略) line63
Warning: mysql_free_result() expects parameter 1 to be resource, (省略) line74
参考HPでは、search.phpの17行目'$search'が宣言されてない状態で記載されて
おりましたので、search.phpの最初にて宣言しました($searchでは検索キーを格納して
おります)。
恐れいりますが、ご教示願います。
input.php 検索ワードを送信
<form action="search.php" method="POST">
<input type="text" name="searchkey">
<input type="submit" name="searchid" value="検索">
</form>
search.php
<?php
$search = htmlspecialchars($_POST['searchkey']);
//データベースに接続
if (!$con = mysql_connect("ホスト名", "user名", "パスワード")) {
echo "接続エラー";
exit ;
}
//データベースを選択
if (!mysql_select_db("db名", $con)) {
echo "データベース選択エラー";
exit ;
}
//フォームで送られてきた条件を元にSELECT文を作成
$sql = "SELECT * FROM listwhere name LIKE '% . $search . %'";
//SELECT文を実行
if ($res = mysql_query($sql)) {
echo "SQLエラー<BR>" ;
exit ;
}
//検索結果<br>
echo "<table border=1>" ;
while($row = mysql_fetch_array($res)){ //エラー
echo "<tr>" ;
echo "<td>" . $row["id"] . "</td>" ;
echo "<td>" . $row["name"] . "</td>" ;
echo "<td>" . $row["date"] . "</td>" ;
echo "<td>" . $row["registant"] . "</td>" ;
echo "<td>" . $row["comment"] . "</td>" ;
echo "</tr>" ;
}
echo "</table>" ;
//結果セットの開放
mysql_free_result($res); //エラー
//データベースから切断
mysql_close($con);
?>
お礼
Zend Frameworkはみたところコンポーネント傾向ですね モジュール機能が便利そうなのでSymfonyにしてみます