mysql+phpでWebアプリを作り始めた者です。
行き詰っている部分がありまして、教えて頂けると助かります。
select文の選択結果に対してのレコード番号を動的に取得したくて、下記のようなSQL文をphpの中で実行するため、下記のようなコードを書きました。
$sql="set @nm=0;select * from (select @nm:=@nm+1 as cnt, f01,f02 from tbl where f02="***") as a limit 0,10";
$rs = mysqli_query($cn, $sql);
$cnt = mysqli_num_rows($rs); // 総行数
$rs = mysqli_query($cn, $sql);
while ($row = mysqli_fetch_assoc($rs)) {
// 略
}
ここで、結果をphpで取得する部分の行で、
Warning: mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given in *****.php on line 70
Warning: mysqli_fetch_assoc() expects parameter 1 to be mysqli_result, boolean given in *****.php on line 289
というエラーが発生してしまい、結果が1件も返りません。
SQL>set @nm=0;select * from (select @nm:=@nm+1 as cnt, f01,f02 from tbl where f02="***") as a limit 0,10
と直接にSQLを入れた場合は、正常に結果が表示されます。
このレコード番号を取得するための変数を入れる前は、下記のようなSQLを実行していましたが、正常に動作しておりました。
$sql="select f01,f02 from tbl where f02="***" limit 0,10";
変数を含んだSQL文をphpで実行するのは無理なんでしょうか?
No.1ベストアンサー
- 回答日時:
まず、ダブルクォーテーションが競合しています。
$sqlに渡す外側に"をつかっているならwhere句のクォーテーションはシングルクォートにしてください
またmysqliならマルチクエリが実行可能だとは思いますが、なれない場合はやはり
1行ごとSQL文を実行したほうがいいでしょう。
$sql="set @nm=0";
$rs = mysqli_query($cn, $sql);
$sql="select * from (select @nm:=@nm+1 as cnt, f01,f02 from tbl where f02='***') as a limit 0,10";
$rs = mysqli_query($cn, $sql);
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP PHPでMysqlにデータがあるかどうか判別したい 1 2023/03/02 11:48
- PHP PHP MySql ページング 2 2022/09/20 06:38
- Visual Basic(VBA) access count数を変数に格納 2 2022/03/30 19:21
- MySQL SQLです。下記の問合せを行うクエリを、PhpMyAdminで作成して実行せよ。 「昨年の各月の総降 1 2023/07/01 00:32
- MySQL 書籍の内容はまともでしょうか? 1 2023/01/22 03:07
- SQL Server [SQLServer] テーブル名からカラム名を取得する 1 2022/08/23 21:20
- MySQL SQLです。こんな感じですか?あってますか? うまくいきません教えてくださいお願いします 1 2023/07/08 15:27
- Oracle 下記のsqlで取得されるレコード以外を取得する方法ありますでしょうか。 SELECT B.番号, B 2 2022/04/20 23:21
- MySQL うまくいきません教えてくださいお願いしますSQLです。クエリ構文です。 1 2023/07/07 12:39
- Excel(エクセル) PHPプログラムをエクセルに張り付けると検索ボックスがでてくる! 3 2022/05/08 07:10
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
select文の実行結果に空白行を...
-
Mysqlで変数を使ったSELECT文の...
-
24時間以内に更新されたデータ...
-
SQL文の入れ子について
-
任意の上位の集計を取得するには?
-
【PL/SQL】FROM区に変数を使う方法
-
テーブルの最後(最新)のレコー...
-
SQLローダーCSV取込で、囲み文...
-
単一グループのグループ関数で...
-
where句中のtrim関数について
-
count関数の値をwhere句で使用...
-
SQLです下記の問合せを行うクエ...
-
Oracleで「文字が無効です」の...
-
2つの列が同じ値の行を取得するSQL
-
データ
-
並べ替えについて
-
SQLで条件にヒットしたレコード...
-
group byの並び順を変えるだけ...
-
BLOB型項目をSQLの検索条件に指...
-
テーブルのフィールドの一番長...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
select文の実行結果に空白行を...
-
SQL文の入れ子について
-
割合(パーセント)を求めるには?
-
24時間以内に更新されたデータ...
-
Mysqlで変数を使ったSELECT文の...
-
時間帯テーブルから直近空き時...
-
SQLだけでselect結果に定数を加...
-
時間帯テーブルから直近空き時...
-
集計されたテーブルの結合
-
条件付けで集計したものをUNION...
-
mysql5でGROUP BYごとにLIMIT??
-
LIMIT句で少なくとも1行は選択...
-
php mysqlにて年月日で登録され...
-
SQLにて順列の抽出
-
SQLローダーCSV取込で、囲み文...
-
単一グループのグループ関数で...
-
テーブルの最後(最新)のレコー...
-
count関数の値をwhere句で使用...
-
【PL/SQL】FROM区に変数を使う方法
-
SELECT FOR UPDATE で該当レコ...
おすすめ情報