teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

6

変更

2017/11/16 05:31

投稿

Keikyu
Keikyu

スコア6

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

5

修正

2017/11/16 05:31

投稿

Keikyu
Keikyu

スコア6

title CHANGED
File without changes
body CHANGED
@@ -22,7 +22,7 @@
22
22
  if($stmt){
23
23
  $team_n = $_POST['name'];
24
24
  $search_n = "%".$team_n."%";
25
- $stmt->bindValue('debname', $search_n);
25
+ $stmt->bindValue('dbname', $search_n);
26
26
  ```
27
27
  ###PDOでのコード
28
28
  ```

4

修正

2017/11/16 05:11

投稿

Keikyu
Keikyu

スコア6

title CHANGED
File without changes
body CHANGED
@@ -16,13 +16,13 @@
16
16
  検索できませんでした。
17
17
  コードは下記の通りです。
18
18
  ```
19
- $sql = 'SELECT * FROM team WHERE name LIKE ???';
19
+ $sql = 'SELECT * FROM team WHERE name LIKE dbname';
20
20
  $stmt = $mysqli->prepare($sql);
21
21
 
22
22
  if($stmt){
23
23
  $team_n = $_POST['name'];
24
24
  $search_n = "%".$team_n."%";
25
- $stmt->bindValue('???', $search_n);
25
+ $stmt->bindValue('debname', $search_n);
26
26
  ```
27
27
  ###PDOでのコード
28
28
  ```

3

修正

2017/11/16 01:17

投稿

Keikyu
Keikyu

スコア6

title CHANGED
File without changes
body CHANGED
@@ -19,7 +19,7 @@
19
19
  $sql = 'SELECT * FROM team WHERE name LIKE ???';
20
20
  $stmt = $mysqli->prepare($sql);
21
21
 
22
- if($statement){
22
+ if($stmt){
23
23
  $team_n = $_POST['name'];
24
24
  $search_n = "%".$team_n."%";
25
25
  $stmt->bindValue('???', $search_n);

2

不要箇所削除

2017/11/16 01:10

投稿

Keikyu
Keikyu

スコア6

title CHANGED
File without changes
body CHANGED
@@ -41,15 +41,4 @@
41
41
  ```
42
42
  も試しましたが、動きませんでした。
43
43
 
44
- 宜しくお願い致します。
45
- <!DOCTYPE html>
46
- <html>
47
- この箇所も一緒になります。
48
- </html>
49
-
50
- ```
51
-
52
- ###試したこと
53
- 上記の記述になります
54
-
55
44
  宜しくお願い致します。

1

内容の修正

2017/11/16 01:05

投稿

Keikyu
Keikyu

スコア6

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