🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
MySQL

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

PHP

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

XAMPP

XAMPP(ザンプ)は、ウェブアプリケーションの実行に必要なフリーソフトウェアをパッケージングしたApacheディストリビューションです。 XAMPPひとつインストールするだけで、Apache、MySQL、PHP、Perlなどのソフトウェアと、 phpMyAdminなどの管理ツール、SQLiteなどのソフトウェアやライブラリモジュールなどを利用することが可能です。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

1回答

3430閲覧

エラー:SQLSTATE [HY093]:無効なパラメーター番号:名前付きパラメーターと位置パラメーターが混在しています

noizi.

総合スコア27

MySQL

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

PHP

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

XAMPP

XAMPP(ザンプ)は、ウェブアプリケーションの実行に必要なフリーソフトウェアをパッケージングしたApacheディストリビューションです。 XAMPPひとつインストールするだけで、Apache、MySQL、PHP、Perlなどのソフトウェアと、 phpMyAdminなどの管理ツール、SQLiteなどのソフトウェアやライブラリモジュールなどを利用することが可能です。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2021/01/14 06:29

前提・実現したいこと

プログラムを実行したところ以下のようなエラーが出て来ました。

先日引用符について勉強したのですが、二重引用符は値を文字列に置き換えられ、単一引用符は置き換えられないというのを知り、実装してみましたが、下記のようなエラーが出てしまいました。

二重引用符、単一引用符の使い分けは他にもあるのでしょうか。

また、名前付きパラメーターと位置パラメーターの混在はどのように改善すればよろしいでしょうか?
ご教授お願い致します。

発生している問題・エラーメッセージ

エラー:SQLSTATE [HY093]:無効なパラメーター番号:名前付きパラメーターと位置パラメーターが混在しています

該当のソースコード

<?php $dsn = 'mysql:dbname=example;host=localhost'; $user = 'root'; $password = 'shapshap'; try{ $dbh = new PDO($dsn, $user, $password); //$C_nam = $_GET['C_name']; //$C_nm = $_GET['C_num']; //$C_phn = $_GET['C_phon']; //$C_add = $_GET['C_sa']; //$stmt = $dbh->prepare('UPDATE example SET C_nam =?,C_nm = ?,C_phn=?,C_add =? WHERE example.C_nm = ?'); //$data=[$C_nam,$C_phn,$C_add,$C_nm]; //$stmt->execute($data); //$db->query($sql); //$stmt->execute(); $stmt = $dbh->prepare('UPDATE example C_nam =?,C_nm = ?,C_phn=?,C_add =? WHERE example.C_nm = :C_nm)'); $stmt->execute(array(':C_nam' => $_GET['C_name'], ':C_nm' => $_GET['C_num'], ':C_phn' => $_GET['C_phon'], ':C_add' => $_GET['C_sa'])); } catch (PDOException $e){ print('Error:'.$e->getMessage()); die(); } $dbh = null; ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja"> <head> <meta http-equiv="Content-Tye" content="text/html; charset=UTF-8"> <title>修正しました。</title> <link rel="stylesheet" href="style.css"> </head> <body> <div class="content"> <h1>修正しました。</h1> <form action="c_search.php" method="POST"> <p><button type="submit">顧客検索へ</button></p> </form> </div> </body> </html>

試したこと

ここに問題に対して試したことを記載してください。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

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

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

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

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

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

guest

回答1

0

ベストアンサー

位置パラメーターを名前付きパラメーターに書き換えると動くと思います。

PHP

1$stmt = $dbh->prepare('UPDATE example C_nam = :C_nam, C_nm = :C_nm, C_phn = :C_phn, C_add = :C_add WHERE example.C_nm = :C_nm)');

投稿2021/01/14 06:45

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

noizi.

2021/01/14 06:53

回答ありがとうございます。とりあえず書き換えてみました。すると、下記のエラーが出ましたが、これはパラメータのエラーは克服したということでよろしいでしょうか? エラー:SQLSTATE [42000]:構文エラーまたはアクセス違反:1064SQL構文にエラーがあります。MariaDBサーバーのバージョンに対応するマニュアルで、 '='山田k太郎 '、C_nm =' 111111 '、C_phn =' 090-1111-4444 '、C_add ='宮城... 'の近くで使用する正しい構文を確認してください。ライン1
退会済みユーザー

退会済みユーザー

2021/01/14 07:03

UPDATE テーブル名 SET カラム名 = 値, カラム名 = 値, カラム名 = 値, ・・・ のSETが足りてない
noizi.

2021/01/14 07:06

回答ありがとうございます。肝心なところを忘れていました。毎度毎度ありがとうございます。
退会済みユーザー

退会済みユーザー

2021/01/14 08:53

うわっ、恥ずかしっ! 寝ぼけて回答するもんじゃないですね・・・次回からは必ず動作確認してから回答します。 混乱させてごめんなさいね。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問