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
$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']";
申し訳ありませんが【成功】と【失敗】の例が間違っていました。下記でもう一度ご指摘いただけないでしょうか。よろしくお願いします。
【成功】
$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']';
$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']';
$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']";
解決しました。ありがとうございました。
解決しました。ありがとうございました。