前提・実現したいこと
プログラムを実行したところ以下のようなエラーが出て来ました。
先日引用符について勉強したのですが、二重引用符は値を文字列に置き換えられ、単一引用符は置き換えられないというのを知り、実装してみましたが、下記のようなエラーが出てしまいました。
二重引用符、単一引用符の使い分けは他にもあるのでしょうか。
また、名前付きパラメーターと位置パラメーターの混在はどのように改善すればよろしいでしょうか?
ご教授お願い致します。
発生している問題・エラーメッセージ
エラー: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/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/01/14 06:53
退会済みユーザー
2021/01/14 07:03
2021/01/14 07:06
退会済みユーザー
2021/01/14 08:53