こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

チェックボックスのデータを受け取ってMYSQL条件としてセットする

HTML <input type="checkbox" value="データ1" name="aa[]">データ1
     <input type="checkbox" value="データ2" name="aa[]">データ2
PHP
<?php
=====DB接続省略========
foreach($aa as $val){
//SQL文
$sql = "SELECT NO,SERVISNAME from JOBDATA
WHERE SERVISNAME='$val'
}
//SQLを発行して結果セットを取得します
$rst = mysql_query($sql);
//取得された結果セットのレコード数を取得・表示します
// $body = mysql_num_rows($rst) . " 件のデータがあります。<BR><BR>";
======DBから取得したデータ表示省略======
======結果セットを破棄し、MySQLとの接続を解除省略======
?>エラー:Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in c:\program files\...
何でこんなエラーがでるでしょう?解決方法教えてください。お願いします。

投稿日時 - 2007-10-22 11:11:24

QNo.3450941

すぐに回答ほしいです

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.2

foreach($aa as $val){
$sql = "SELECT NO,SERVISNAME from JOBDATA
WHERE SERVISNAME='$val'
}
この時点で引用符を閉じてないし、foreachとmysql_query()がリンクしてないし
期待の値を得ることはむずかしいですね。

こんな感じで調整してみてはいかがですか?
<?PHP
$str="";
if(is_array($_REQUEST["aa"])){
foreach($_REQUEST["aa"] as $val){
$str.=($str==""?"":",")."'$val'";
}
$str="AND `SERVISNAME` IN ($str)";
}
$sql =<<<eof
SELECT NO,SERVISNAME
FROM JOBDATA
WHERE 1
{$str}
eof;
$rst = mysql_query($sql);
//print $sql;
?>

投稿日時 - 2007-10-22 12:02:32

ANo.1

wp_

mysql_fetch_array()のエラーの前にmysql_query()のエラーは出ていませんか。
クエリが不正などの理由でmysqlリソースが正常に返っていないように見えます。

$sqlをvar_dumpしmysqlコマンドでクエリの正当性を検査する、
mysql_error()でどのようなエラーが出ているか見てみる、などしてみてはいかがでしょう。


あと、
foreach($aa as $val){
//SQL文
$sql = "SELECT NO,SERVISNAME from JOBDATA WHERE SERVISNAME='$val'
}
//SQLを発行して結果セットを取得します
$rst = mysql_query($sql);

この順序だと$aaの最後の値しか処理されないのではないですか?
無駄な突っ込みでしたらスルーしてください。

投稿日時 - 2007-10-22 11:50:27

あなたにオススメの質問