人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

MySQLでデータ更新が失敗

PHPを使ってMySQLでデータ更新する時に、下記の【成功】と同じ事を【失敗】で行うとこのSQL文の文法にエラーが発生します。【失敗】はforeachで配列のデータを使っています。間違っている部分を指摘してください。

【成功】
$sql = 'UPDATE data SET url = "http://www.hoge.com/aaa" WHERE id = 123';

【失敗】
$sql = 'UPDATE data SET url = $value['url'] WHERE id = $value['id']';

Linux、Windows
PHP 5.2.5
MySQL 5.1.22-rc

●質問者: metazy
●カテゴリ:コンピュータ インターネット
✍キーワード:Linux MySQL PHP RC SET
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● kunyami
●20ポイント

http://www.php.net

$sql = "UPDATE data SET url = '{$value['url']}' WHERE id = {$value['id']}";

◎質問者からの返答

申し訳ありませんが【成功】と【失敗】の例が間違っていました。下記でもう一度ご指摘いただけないでしょうか。よろしくお願いします。

【成功】

$sql = 'UPDATE data SET url = "http://www.hoge.com/aaa/bbb/ccc" WHERE id = 123';

【失敗】

$sql = 'UPDATE data SET url = http://www.hoge.com/$value['param1']/bbb/$value['param2'] WHERE id = $value['id']';


2 ● Leclerc
●20ポイント

$sql = "UPDATE data SET url = \"$value['url']\" WHERE id = $value['id']";

http://www.php.net/manual/ja/language.types.string.php

◎質問者からの返答

申し訳ありませんが【成功】と【失敗】の例が間違っていました。下記でもう一度ご指摘いただけないでしょうか。よろしくお願いします。

【成功】

$sql = 'UPDATE data SET url = "http://www.hoge.com/aaa/bbb/ccc" WHERE id = 123';

【失敗】

$sql = 'UPDATE data SET url = http://www.hoge.com/$value['param1']/bbb/$value['param2'] WHERE id = $value['id']';


3 ● kunyami
●40ポイント ベストアンサー

http://www.php.net

$sql = "UPDATE data SET url = 'http://www.hoge.com/{$value['param1']}/bbb/{$value['param2']}' WHERE id = $value['id']";

◆SQLでは文字列リテラルは「'(シングルコーテーション)」で囲む。

◆PHPで文字列内に変数名を利用したい場合は、「"(ダブルコーテーション)」で文字列を囲むこと。

◆PHPで文字列内の変数部分を「{(波括弧)」で囲むことで、ここが変数であることを明示する。

PHPで文字列内に変数を書き込むことで、理解しづらくなってしまうのであれば、以下のようにすれば理解しやすいのではないでしょうか?

$sql = "UPDATE data SET url = 'http://www.hoge.com/" . $value['param1'] . "/bbb/" . $value['param2'] . "' WHERE id = $value['id']";

◎質問者からの返答

解決しました。ありがとうございました。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ