質問編集履歴

6

変更

2017/11/16 05:31

投稿

Keikyu
Keikyu

スコア6

test CHANGED
@@ -1 +1 @@
1
- Mysqliの検索ページの作成方法についてご教示ください。
1
+ PDOからMysqliの検索ページについてご教示ください。
test CHANGED
File without changes

5

修正

2017/11/16 05:31

投稿

Keikyu
Keikyu

スコア6

test CHANGED
File without changes
test CHANGED
@@ -46,7 +46,7 @@
46
46
 
47
47
  $search_n = "%".$team_n."%";
48
48
 
49
- $stmt->bindValue('debname', $search_n);
49
+ $stmt->bindValue('dbname', $search_n);
50
50
 
51
51
  ```
52
52
 

4

修正

2017/11/16 05:11

投稿

Keikyu
Keikyu

スコア6

test CHANGED
File without changes
test CHANGED
@@ -34,7 +34,7 @@
34
34
 
35
35
  ```
36
36
 
37
- $sql = 'SELECT * FROM team WHERE name LIKE ???';
37
+ $sql = 'SELECT * FROM team WHERE name LIKE dbname';
38
38
 
39
39
  $stmt = $mysqli->prepare($sql);
40
40
 
@@ -46,7 +46,7 @@
46
46
 
47
47
  $search_n = "%".$team_n."%";
48
48
 
49
- $stmt->bindValue('???', $search_n);
49
+ $stmt->bindValue('debname', $search_n);
50
50
 
51
51
  ```
52
52
 

3

修正

2017/11/16 01:17

投稿

Keikyu
Keikyu

スコア6

test CHANGED
File without changes
test CHANGED
@@ -40,7 +40,7 @@
40
40
 
41
41
 
42
42
 
43
- if($statement){
43
+ if($stmt){
44
44
 
45
45
  $team_n = $_POST['name'];
46
46
 

2

不要箇所削除

2017/11/16 01:10

投稿

Keikyu
Keikyu

スコア6

test CHANGED
File without changes
test CHANGED
@@ -85,25 +85,3 @@
85
85
 
86
86
 
87
87
  宜しくお願い致します。
88
-
89
- <!DOCTYPE html>
90
-
91
- <html>
92
-
93
- この箇所も一緒になります。
94
-
95
- </html>
96
-
97
-
98
-
99
- ```
100
-
101
-
102
-
103
- ###試したこと
104
-
105
- 上記の記述になります
106
-
107
-
108
-
109
- 宜しくお願い致します。

1

内容の修正

2017/11/16 01:05

投稿

Keikyu
Keikyu

スコア6

test CHANGED
File without changes
test CHANGED
@@ -1,120 +1,90 @@
1
1
  ###PDOからMysqliの変換
2
+
3
+ phpの勉強を始めて約1年(本業ではありません)の初心者です。
4
+
5
+ 不慣れな箇所が多々あると思いますが、宜しくお願い致します。
2
6
 
3
7
 
4
8
 
9
+ 今回「ウェブの葉」というphpコードのサイトを参照にして、検索サイトを組み立てているのですが、その際、PDOからmysqliに変換しております。
10
+
11
+ 色々試行錯誤しながら、コードを変更しておりましたが、
12
+
5
- phpの勉強を始めて約1年(本業ではありせん)の初心者です
13
+ ネットに反映されないた、お手上げ状態になり、ご質問させ頂きした
6
14
 
7
15
 
8
16
 
9
- 「ウェブの葉」のサイトを参照して、PDOからMysqliでの検索サイトを組み立てているのですが、
10
-
11
- お手上げ状態になってしまったので、ご質問させて頂きました。
12
-
13
17
  下記は、PDOでの検索サイトがある参照URLです。
14
18
 
15
- [リンク内容](http://noumenon-th.net/programming/2016/02/15/pdo_search/
19
+ http://noumenon-th.net/programming/2016/02/15/pdo_search
16
-
17
- )
18
20
 
19
21
 
20
22
 
21
- ###Mysqliでのあいまい検索に悩んでます。
23
+ ###Mysqliでのあいまい検索
24
+
25
+ 調べるとPDOはあいまい検索として「like (:name)」が使用できましたが、
26
+
27
+ mysqliでは検索できませんでした。
28
+
29
+ 「name=?」「like '%name%'」「like '%".$name."%'」等を試しましたが、
30
+
31
+ 検索できませんでした。
32
+
33
+ コードは下記の通りです。
34
+
35
+ ```
36
+
37
+ $sql = 'SELECT * FROM team WHERE name LIKE ???';
38
+
39
+ $stmt = $mysqli->prepare($sql);
22
40
 
23
41
 
24
42
 
25
- ```
43
+ if($statement){
26
44
 
27
- 自分の中でのポイントは、「like (:name)」はPDOしか使えないため、
45
+ $team_n = $_POST['name'];
28
46
 
29
- name=?」「like '%name%'」など、試しましたが上手くできずにいました。
47
+ $search_n = "%".$team_n."%";
30
48
 
31
- ですが、そもそも本質的にも問題あるのかな・・・と思い質問した背景となります。
49
+ $stmt->bindValue('???', $search_n);
32
50
 
33
51
  ```
34
52
 
35
- PDOをソースは上記ジを見て頂くこととして、
53
+ ###PDO
36
54
 
37
- 私が記述したソースは以下の通りです。
55
+ ```
38
56
 
39
- ※「pdo_search_form.html」は一緒になります。
57
+ $statement = $dbh->prepare("SELECT * FROM team WHERE name LIKE (:name) ");
40
58
 
41
- ###該当のソースコード
59
+ if($statement){
42
60
 
43
- ```<?php
61
+ $yourname = $_POST['yourname'];
44
62
 
45
- header("Content-type: text/html; charset=utf-8");
63
+ $like_yourname = "%".$yourname."%";
46
64
 
47
-
65
+ $statement->bindValue(':name', $like_yourname, PDO::PARAM_STR);
48
66
 
49
- if(empty($_POST)) {
50
-
51
- header("Location: pdo_search_form.html");
52
-
53
- exit();
54
-
55
- }else{
56
-
57
- //名前入力判定
58
-
59
- if (!isset($_POST['yourname']) || $_POST['yourname'] === "" ){
60
-
61
- $errors['name'] = "名前が入力されていません。";
62
-
63
- }
64
-
65
- }
66
-
67
- if(count($errors) === 0){
68
-
69
- $dsn = 'mysql:host=◯◯◯;dbname=sample01;charset=utf8';
70
-
71
- $user = '◯◯◯';
72
-
73
- $password = '◯◯◯';
74
-
75
- $sql = 'SELECT * FROM name WHERE name LIKE (:name)';
76
-
77
- $stmt = $mysqli->prepare($sql);
78
-
79
- if($statement){
80
-
81
- $yourname = $_POST['yourname'];
82
-
83
- $like_yourname = "%".$yourname."%";
84
-
85
- $statement->bindValue(':name', $like_yourname);
86
-
87
- if($statement->execute()){
88
-
89
- $row_count = $statement->rowCount();
90
-
91
- while($row = $statement->fetch()){
92
-
93
- $rows[] = $row;
94
-
95
- }
96
-
97
- }else{
98
-
99
- $errors['error'] = "検索失敗しました。";
100
-
101
- }
102
-
103
- $stmt->close();
104
-
105
- }else{
106
-
107
- echo $mysqli->errno . $mysqli->error;
108
-
109
- }
110
-
111
- }
112
-
113
- $mysqli->close();
114
-
115
- ?>
67
+ ```
116
68
 
117
69
 
70
+
71
+ ###その他に試したこと
72
+
73
+ bindValueからbind_paramに変更して
74
+
75
+ ```
76
+
77
+ $stmt->bind_param('s', $team_n);
78
+
79
+ $team_n = $_POST['name'];
80
+
81
+ ```
82
+
83
+ も試しましたが、動きませんでした。
84
+
85
+
86
+
87
+ 宜しくお願い致します。
118
88
 
119
89
  <!DOCTYPE html>
120
90