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

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

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

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

PHP

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

Q&A

解決済

1回答

1603閲覧

PHPでbindPramを使った方法でDBをUPDATEできない

luckyclock

総合スコア73

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

PHP

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

0グッド

0クリップ

投稿2016/03/08 01:43

PHPでのデータベース更新でセミコロンを使ってbindParamした方法で更新できないです。
更新できない方のコードに何か問題ありますでしょうか?
更新はできていませんが、resultの結果は真になります。

更新できるコード

PHP

1 $sth = $dbh->prepare("UPDATE test_tbl SET test = '$test', test1 = '$test1', test2= '$test2', test3= '$test3' WHERE id = '$id'"); 2 $result = $sth->execute(); 3

更新できないコード

PHP

1 $sth = $dbh->prepare("UPDATE test_tbl SET test = ':test', test1 = ':test1', test2 = ':test2', test3 = ':test3' WHERE id = ':id'"); 2 $sth->bindParam(':test', $test, PDO::PARAM_INT); 3 $sth->bindParam(':test1', $test1, PDO::PARAM_STR); 4 $sth->bindParam(':test2', $test2, PDO::PARAM_STR); 5 $sth->bindParam(':test3', $test3, PDO::PARAM_STR); 6 $sth->bindParam(':id', $id, PDO::PARAM_STR); 7 $result = $sth->execute();

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

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

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

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

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

guest

回答1

0

ベストアンサー

1行目が誤りです。
正しくはこう

PHP

1$sth = $dbh->prepare("UPDATE test_tbl SET test = :test, test1 = :test1, test2 = :test2, test3 = :test3 WHERE id = :id");

処理とは関係ありませんが、
bindParamが宣言された行は参照する変数を定義しただけで、評価タイミングはexecute()された瞬間になります。
bindValueを使ったほうが直感的でバグが減るかと思います。

投稿2016/03/08 01:57

miyabi-sun

総合スコア21158

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

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

luckyclock

2016/03/08 02:23

ありがとうございます。 無事動作確認できました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問