質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
INSERT

INSERTとは、行を追加する、コンピュータのデータベース言語SQLにおけるデータ操作言語(DML)ステートメントの1つである

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

Q&A

解決済

2回答

335閲覧

phpでデータベースに接続したのですが、行の追加ができません。

ni-moni-mo

総合スコア9

INSERT

INSERTとは、行を追加する、コンピュータのデータベース言語SQLにおけるデータ操作言語(DML)ステートメントの1つである

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

0グッド

0クリップ

投稿2018/06/28 09:04

PHP勉強中です。
phpでデータベースに接続したのですが、行の追加ができません。
投稿フォームから取得して、
取得したものでINSERTしたいのですが上手くいきません。

Warning: PDOStatement::execute(): SQLSTATE[HY093]: Invalid parameter number: parameter was not defined in /home/users

on line 46行目ということで46行目には

$flag = $stmt->execute($data);

46行目が実行できていない?何が悪いのか分かりません。教えてください。

以下コードです。

<?php // エラー表示をonにする error_reporting(-1); ini_set("display_errors", 1); // formから取得 $no = $_GET['no']; $name = $_GET['name']; $birth = $_GET['birth']; $email = $_GET['email']; $dsn = 'mysql:dbname=LAA0886279-----;host=------------------'; $user = 'LAA---------'; $password= '-----------'; try { $pdo = new PDO($dsn, $user, $password); $pdo->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC); //データベースのに1行追加させてる $sql = 'insert into okuru (no, name) values (?, ?)'; if ($sql == null){ print('接続に失敗しました。<br>'); }else{ print('接続に成功しました。<br>'); } // SQL文に当てはめるDATAを作成 $data = [ 'no' => $no , 'name' => $name ]; $stmt = $pdo->prepare($sql); $stmt->bindValue('?', $no, PDO::PARAM_INT); $stmt->bindValue('?', $name, PDO::PARAM_STR); $flag = $stmt->execute($data); if ($flag){ print('データの追加に成功しました<br>'); }else{ print('データの追加に失敗しました<br>'); } print('<hr>'); //データベースの中身を表示させてる $sql = "SELECT * FROM okuru"; foreach ($pdo ->query($sql) as $row) { print($row['no']); print(' '); print($row['name']); print('<br>'); } } catch (PDOException $e) { echo '接続失敗 ' . $e->getMessage(); } ?>

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

papinianus

2018/06/28 09:19

この学習段階で、無から仕様書読んでここまで書けるとは俄には信じがたいのですが、出典を書いていただけませんか?
ni-moni-mo

2018/06/28 10:34

Orlofskyさん、初めて質問してみたのですがよくわからなくて。アドバイスありがとうございます。ロリポップデータベースなのですが、ロリポップデータベースとつければいいのでしょうか?
ni-moni-mo

2018/06/28 10:36

papinianusさん。無からだなんて、とてもとても。他で教えていただいたり、コピペとかです。意味は少しづつ勉強中です。よろしくお願いします。
guest

回答2

0

ベストアンサー

疑問符プレースホルダーと名前付きプレースホルダーをごっちゃにしている
感じですかね?

PHP

1$sql = 'insert into okuru (no, name) values (?, ?)'; 2$data = [$no,$name]; 3$stmt = $pdo->prepare($sql); 4$stmt->execute($data);

名前付きでやるなら

PHP

1 2$sql = 'insert into okuru (no, name) values (:no,:name)'; 3$stmt = $pdo->prepare($sql); 4$stmt->bindValue(':no', $no, PDO::PARAM_INT); 5$stmt->bindValue(':name', $name, PDO::PARAM_STR); 6$stmt->execute();

投稿2018/06/28 11:03

編集2018/06/28 11:03
yambejp

総合スコア114585

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ni-moni-mo

2018/06/28 12:49

的確に回答ありがとうございます!疑問符プレースホルダーと名前付きプレースホルダーというワードを頂けたので調べて理解を深めたいと思います!やってみます!ありがとうございます!
ni-moni-mo

2018/06/28 16:16

解決致しました。ありがとうございます!これで寝れます。おやすみなさい!
guest

0

同じエラー を参考にされては?

投稿2018/06/28 09:12

Orlofsky

総合スコア16415

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ni-moni-mo

2018/06/28 12:50

ありがとうございます。わたしも見た質問だったのですが、よくわからなくて。またみてみます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問