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

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

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

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

phpMyAdmin

phpMyAdminはオープンソースで、PHPで書かれたウェブベースのMySQL管理ツールのことです。

PHP

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

Q&A

0回答

1111閲覧

SQL文 エラーで詰まってます 初心者です

mi-30

総合スコア16

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

phpMyAdmin

phpMyAdminはオープンソースで、PHPで書かれたウェブベースのMySQL管理ツールのことです。

PHP

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

0グッド

1クリップ

投稿2022/01/02 00:36

編集2022/01/02 00:38

商品登録する時にDB新規登録なのか、更新なのか分けてDBに登録したい。

sql文が間違っていて、進めることができてません。
自分のDBにSQL文を直打ちしましたが更新されないので間違っていると思われますが、初心者すぎて分かりません。。SQL文基本の書き方の記事を参考にしましたが解決に至りませんでした。ヒントお願いいたします。

<<<<<<<該当コード<<<<<<<<<<<

//例外処理
try {
//DBへ接続### ヘディングのテキスト
$dbh = dbConnect();
//SQL文作成
//編集画面の場合はUPDATE文、新規登録画面の場合はINSERT文を生成
if($edit_flg){
debug('DB更新です。');
### $sql = 'UPDATE product SET name = :name, category_id = :category, price = :price, comment = :comment, pic1 = :pic1, pic2 = :pic2, pic3 = :pic3 WHERE user_id = :u_id AND id = :p_id';
$data = array(':name' => $name, ':category' => $category_id, ':price' => $price, ':comment' => $comment, ':pic1' => $pic1, ':pic2' => $pic2, ':pic3' => $pic3, ':u_id' => $_SESSION[$user_id], ':p_id' => $p_id);
}else{
debug('DB新規登録です。');
### $sql = 'INSERT INTO product (name, category_id, price, comment, pic1, pic2, pic3, user_id, create_date) VALUES (:name, :category, :price, :comment, :pic1, :pic2, :pic3, :u_id, :date)';
$data = array(':name' => $name , ':category' => $category, ':price'=> $price, ':comment' => $comment, ':pic1'=> $pic1, ':pic2' => $pic2, ':pic3' => $pic3, ':u_id' => $_SESSION['user_id'], ':date' => date('Y-m-d H:i:s'));
}
debug('SQL:'.$sql);
debug('流し込みデータ:'.print_r($data,true));
//クエリ実行
$stmt = queryPost($dbh, $sql, $data);

<<<<<<<<<<<<<<エラー文<<<<<<<<<<<<<<<<<<<<<<<
エラー発生:SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens

バインドされた変数の数がトークンの数と一致しませんと怒られています。。

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

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

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

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

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

skys215

2022/01/02 04:14

queryPostのコードをお願いできますか? その中に問題があると思います。
m.ts10806

2022/01/02 09:47

コードやエラーはマークダウンのcode機能を利用してご提示ください。 https://teratail.com/questions/238564 >初心者です。 質問に「初心者アイコン」をつけるのにとどめてください。 要件とは別の話なので、タイトルや本文には不要です。
m.ts10806

2022/01/02 09:54

ちなみにinsertとupdateどっちでエラー出てるんでしょう。 またupdateのほうが$_SESSION[$user_id] でinsertのほうが$_SESSION['user_id'] で参照の仕方が違います。 これは想定通りの値取れてるんでしょうか? デバッグしてください。 nullだとパラメータとして認識されない可能性はあります。
mi-30

2022/01/02 12:32

デバッグしたところ、INSERT文とUPDATE文の中身はちゃんと入ってましたが、画面表示終了した後 Integrity constraint violation: 1048 Column 'user_id' cannot be null というエラーが吐かれました。 教えていただいたnullだとパラメータとして認識されないということでしょうか?
m.ts10806

2022/01/02 13:32

質問は編集できますので。 >教えていただいたnullだとパラメータとして認識されないということでしょうか? いえ、エラーの通りです。Google翻訳でいいので訳してみてください。 nullが来てるのは間違いないですが。
mi-30

2022/01/02 13:38

はい、確かにNULLが入ってました。 整合性制約違反:1048列 'user_id'をnullにすることはできません というエラーの翻訳内容だったのを書き漏れていました。 どこかでNULLを入れてしまったという解釈でいいのでしょうか?
m.ts10806

2022/01/02 14:00

既に私が懸念事項として書いてる部分ではと。 >またupdateのほうが$_SESSION[$user_id] >でinsertのほうが$_SESSION['user_id'] で参照の仕方が違います。
mi-30

2022/01/02 14:03

あ、そこ修正したところ 解決しました。ただの記述ミスでした。 ありがとうございました。
skys215

2022/01/02 14:06

$_SESSION['user_id']がNULLだと思います。 var_dump($_SESSION['user_id']);で値を確認することができます。
mi-30

2022/01/02 14:08

はい、見事にNULLが入っていました。中身の見方教えていただきありがとうございます!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問