$dbh = new PDO("mysql:host=localhost;dbname=$databasename;charset=utf8", $user, $pass);
$dbh->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$sql = "UPDATE $dbtablename
SET kankatsu = ?, subject = ?, naiyou = ?, tantou = ?,
ren1 = ? -(略)- ren50 = ?
WHERE id = ?";
$stmt = $dbh->prepare($sql);
phpにて上記のように「ren1 = ? -(略)- ren50 = ?」の部分を
for($i=1;$i<=50;$i++){
ren.$i = ?;
}
としたのですが、
エラー発生: SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'for(=1;<=50;++){ ren. = ?; } WHERE id = ?' at line 7
というエラーが出ます。
ren.$i = ?;を
"ren".$i = ?;
ren."$i" = ?;
'ren'.'$i' = ?;
[ren.$i] = ?;
と変化させてみましたがエラーまたは全く動作しません。どうかご教示お願いします。
No.2ベストアンサー
- 回答日時:
$sql = "UPDATE hoge SET kankatsu=?,subject=?,naiyou=?,tantou=?,";
$sql.= implode(",",array_map(function($x){return "ren".$x."=?";},range(1,50)));
$sql.=" WHERE id = ?";
print $sql;
とすると
UPDATE hoge SET kankatsu = ?, subject = ?, naiyou = ?, tantou = ?,ren1=?,ren2=?,ren3=?,ren4=?,ren5=?,ren6=?,ren7=?,ren8=?,ren9=?,ren10=?,ren11=?,ren12=?,ren13=?,ren14=?,ren15=?,ren16=?,ren17=?,ren18=?,ren19=?,ren20=?,ren21=?,ren22=?,ren23=?,ren24=?,ren25=?,ren26=?,ren27=?,ren28=?,ren29=?,ren30=?,ren31=?,ren32=?,ren33=?,ren34=?,ren35=?,ren36=?,ren37=?,ren38=?,ren39=?,ren40=?,ren41=?,ren42=?,ren43=?,ren44=?,ren45=?,ren46=?,ren47=?,ren48=?,ren49=?,ren50=? WHERE id = ?
となります。
あとはprepareで全値をわたしてやればいいでしょう
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- MySQL 参考書に従って入力したつもりでしたが、最後はエラーがでました。 1 2022/09/28 03:45
- MySQL テーブル作成です。どこかのスペルが間違っているか記号など スペースかな? 1 2022/10/01 05:08
- MySQL 何にかが違うから エラーなんでしょうね! 2 2022/09/18 05:28
- MySQL MySQLのテーブル作成でハイフン - は使用できないのでしょうか? 2 2022/10/21 16:50
- PHP DBのハッシュ化したパスワードをpassword_verifyで戻し照合したのですが上手く行きません 2 2023/02/06 13:24
- PHP 重複を防ぐ記述について教えて下さい。 3 2023/04/03 14:35
- PHP 【PHP/MySQL】コード上で生成したクエリを基に集計クエリを作りたい 1 2022/07/28 15:06
- Perl RSSにdiv,ul classを付けたいのですがどのようにつけるのかわからないです 2 2022/03/28 01:53
- CGI perlで書いたcgiでsqliteの使い方を教えてください 2 2023/05/08 21:29
- 英語 英文の添削お願いします。【長文です。】 マッチングアプリで相手を言い負かしている時のやつです。 色々 1 2023/07/01 02:12
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
insert1つの処理でもトランザ...
-
ResultSetインターフェイスでの...
-
<VB.NET>INSERT文でDBにデータ...
-
CakePHPとMySqlを使用していま...
-
配列をループさせてUPDATE
-
order by での変数使用について。
-
Q&Aサイトを作成していてURLの...
-
sqliteの構造体
-
JAVA SQLServerException 列名 ...
-
VBAをつかってクエリの情報を抽...
-
MySQLでデータベースにデータin...
-
phpのエラーについてです
-
BLOBでの画像表示について
-
PHPで[]の使い方について
-
sqlから多次元配列に要素を格納...
-
sortable ギブアップです…助け...
-
エラー3011
-
php テーブルを作れない
-
テーブルに入っているデータと...
-
PHP と MySQL でテーブルの行数...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
JAVA SQLServerException 列名 ...
-
insert1つの処理でもトランザ...
-
Pro*Cの構文エラー
-
<VB.NET>INSERT文でDBにデータ...
-
データベースに存在するデータ...
-
ResultSetインターフェイスでの...
-
C# で発生したException.Messag...
-
Q&Aサイトを作成していてURLの...
-
VBA ACCESS SQL...
-
MySQLのINSERT時にたまに重複に...
-
INSERT,DELETEを同時に
-
【初歩】配列の格納データ数だ...
-
PHP&MySQLでの文字列+数列の一...
-
php postgres Insert と updat...
-
VB.NET エラーになる箇...
-
OR検索を実装したい
-
PHP初心者です。syntax error, ...
-
mysqliを使ってデータベースを...
-
like検索の複数キーワードで、...
-
CakePHPとMySqlを使用していま...
おすすめ情報
お忙しいなか早速の回答ありがとうございます。
試してみたのですが動作しないため""や''や半角スペース,for文との組み合わせ等いくつか実行し、implode,range等をphpのマニュアルで読んでみました。
もし可能ならばもう少しご教示いただけないでしょうか。
お願いします。
ありがとうございます。本当にありがとうございます。
$sql =
$sql = と分けるんですね。$sqlひとつに全て入れると勘違いしていました。お忙しいところ本当にありがとうございます。