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,它将像这样工作:

请注意,我在 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)
");
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 回答
0

好吧,如果它是原理的一种证明,并且您仍然想在 SQL 端执行此操作:

$query = "... IF('$reco' = 'yes', '$views' ...";

注意 $reco 周围的引号。因此,如果 $reco 为“是”,则查询将被解释为... IF ('yes' = 'yes', 'some_value' ...

于 2013-11-14T22:00:05.620 回答