0

上記のようなSQL条件で単一のクエリを作成しようとしています:

まず、必要なときにデータを更新できるようにする PHP 変数$recoがあるとしましょう。

mysql_query("
INSERT INTO app_table (views, average)
VALUES
(
IF($reco = 'yes', '$views', views),
IF($reco = 'yes', '$aver', average)
)
ON DUPLICATE KEY UPDATE
views = IF($reco = 'yes', $views, views),
average = IF($reco = 'yes', $aver, average)
");

問題は$reco、クエリ内で希望どおりに機能しないことですが、テーブルの列は機能するので、PHP 変数で機能させるにはどうすればよいですか?

たとえば、テーブル内に reco がある場合、次のように機能します。

$reco in php 変数がテーブル内にないことに注意してください。

mysql_query("
INSERT INTO app_table (views, average)
VALUES
(
IF(reco = 'yes', '$views', views),
IF(reco = 'yes', '$aver', average)
)
ON DUPLICATE KEY UPDATE
views = IF(reco = 'yes', $views, views),
average = IF(reco = 'yes', $aver, average)
");
4

2 に答える 2

0

最も簡単な方法は、純粋に PHP で文字列比較を行うことだと思います。

if ($reco == 'yes') {
   $views = $views_value;
   $average = $average_value;
}
else {
   $views = $views_default;
   $average = $average_default;
}

//escape your $views and $average strings, if necessary
$query = "INSERT INTO app_table (views, average) VALUES ('$views', '$average') ON DUPLICATE KEY UPDATE //whatever";
于 2013-11-14T21:48:34.287 に答える