回答編集履歴

2

調整

2023/01/17 09:02

投稿

yambejp
yambejp

スコア114784

test CHANGED
@@ -16,6 +16,7 @@
16
16
  (10,'kato');
17
17
 
18
18
  ```
19
+ 結果的には、「sato」→「suzuki」が抽出される
19
20
 
20
21
  ```PHP
21
22
  $col=2; // colに数値を指定するとcol列目でソートすることになる

1

ついき

2023/01/17 09:00

投稿

yambejp
yambejp

スコア114784

test CHANGED
@@ -1 +1,34 @@
1
1
  「ORDER BY '.$max.」がおかしいのでなんともならないと思います
2
+
3
+ # sample
4
+ ```SQL
5
+ create table tbl (id int primary key,name varchar(30));
6
+ insert into tbl values
7
+ (1,'suzuki'),
8
+ (2,'sato'),
9
+ (3,'takahashi'),
10
+ (4,'tanaka'),
11
+ (5,'ito'),
12
+ (6,'watanabe'),
13
+ (7,'yamamoto'),
14
+ (8,'nakamura'),
15
+ (9,'kobayashi'),
16
+ (10,'kato');
17
+
18
+ ```
19
+
20
+ ```PHP
21
+ $col=2; // colに数値を指定するとcol列目でソートすることになる
22
+ $name="%s%"; // とりあえず「nameにsを含む」という条件
23
+ $offset=1; // offset個目のデータから抽出
24
+ $limit=2; // limit個のデータを抽出
25
+ $sql = 'SELECT * FROM tbl WHERE name LIKE :name ORDER BY :col Limit :offset,:limit' ;
26
+ $stmt = $pdo->prepare($sql);
27
+ $stmt->bindValue('col',$col,PDO::PARAM_INT);
28
+ $stmt->bindValue('name',$name,PDO::PARAM_STR);
29
+ $stmt->bindValue('offset',$offset,PDO::PARAM_INT);
30
+ $stmt->bindValue('limit',$limit,PDO::PARAM_INT);
31
+ $stmt->execute();
32
+ $rows=$stmt->fetchAll(PDO::FETCH_ASSOC);
33
+ print_r($rows);
34
+ ```