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

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

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

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

Q&A

解決済

3回答

2016閲覧

PDOでデータベースにUPDATEできません。

退会済みユーザー

退会済みユーザー

総合スコア0

PHP

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

0グッド

0クリップ

投稿2016/08/24 08:17

php

1<?php 2 try{ 3 $pdo = new PDO('mysql:host=127.0.0.1; dbname=dbname;','root'); 4 5 $stmt = $pdo -> prepare("UPDATE files SET point = point + 1 WHERE id=2 "); 6 $stmt -> execute(); 7 8 $result = '完了'; 9 echo $result; 10 11 12 13}catch(PDOException $e){ 14 exit('error'.$e -> getMessage()); 15} 16 17?>

データベースのアップデートをしたいのですが、「完了」という文字は出ているのですが、データが反映されません。
pointのカラムの値にプラス1したいです。

変なところのご指摘お願いします。
よろしくお願いします。

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

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

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

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

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

退会済みユーザー

退会済みユーザー

2016/08/24 08:24

dsn, userは与えているけど、passwordは与えてますか?
guest

回答3

0

ベストアンサー

php

1<?php 2 3try { 4 $option = array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION); // <= これがないと、 try {} catch の意味がない 5 $pdo = new PDO('mysql:host=127.0.0.1;dbname=dbname;charset=utf8' // <- スペース入れちゃダメ 6 , 'root' 7 , 'pass' 8 , $option // <= これがないと、 try {} catch の意味がない 9 ); 10 11 $stmt = $pdo->prepare("UPDATE files SET point = point + 1 WHERE id=2 "); 12 $stmt->execute(); 13 14 $result = '完了'; 15 echo $result; 16} catch (PDOException $e) { 17 exit('error' . $e->getMessage()); 18}

投稿2016/08/24 08:22

編集2016/08/24 09:08
退会済みユーザー

退会済みユーザー

総合スコア0

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

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

退会済みユーザー

退会済みユーザー

2016/08/24 08:27

try-catch大事! charset大事! (*'-')b
退会済みユーザー

退会済みユーザー

2016/08/24 12:15

前回と今回の含めて直したら、進歩はありましたが、まだ解決できませんでした。新しいエラーには、SQOSTATE 42000:1064 とあり、"UPDATE files SET point = point + 1 WHERE id=2 "の近くがおかしいとのことでした。記述は合っていますでしょうか?
退会済みユーザー

退会済みユーザー

2016/08/24 12:16

エラー文はその全てに意味があります。省略せずに記述してください。
退会済みユーザー

退会済みユーザー

2016/08/24 12:24 編集

> http://loudspeaker.sakura.ne.jp/devblog/2014/09/08/error_in_mysql_cuz_predefined_name_appear/ 予約語使うんじゃねーよ!ってエラーですね。 テーブル名・フィールド名は `` で囲みましょうね。 > 前回と今回の含めて直したら、進歩はありましたが、まだ解決できませんでした。 問題を解決するための手がかりを見つけるためのコードであって、問題点そのものを修正するものではないので、解決できなくて当然です。
退会済みユーザー

退会済みユーザー

2016/08/24 12:36

解決しました!他の場所で予約語使ってました。毎回ありがとうございます。
guest

0

何も判定条件を付けずに$result に完了という文字を代入しているので、何をやっても値は出ますね...。

php

1$isSuc = $stmt -> execute(); 2 3if($isSuc !== false){ 4 $result = '完了'; 5 echo $result; 6}

$stmt -> executeは戻り値をboolで返せるので、このようにして判定してみると、SQL文が有効かどうか分かります。

投稿2016/08/24 09:12

FKM

総合スコア3633

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

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

0

$pdo = new PDO('mysql:host=127.0.0.1; dbname=dbname;','root');
ここでdatabase等の指定は済んでいるようですが、passwordって設定していないでしょうか?
設定していなかったら別のエラーが出ちゃいそうですが。

WHERE id=2
tableにid=2に該当するものがなければupdateはかからないですね。

投稿2016/08/24 08:32

KWF

総合スコア17

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

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

退会済みユーザー

退会済みユーザー

2016/08/24 13:40

回答ありがとうございます!パスワードの設定も加えたら上手くいきました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問