我似乎无法让这个工作,
基本上,我要做的是返回列timestamp
多于变量$timestamp
的所有行,列hit_counter
小于列{{ 1}}。
让第一部分工作不是问题,但第二部分似乎是,因为当max_hits
超过hit_counter
时它仍然会提取行。
这是我的代码:
max_hits
这似乎会返回$query = "SELECT * FROM links WHERE timestamp >= '$timestamp' AND hit_counter >= 'max_hits' AND overflow = 'NO'";
$result = mysql_query($query);
$size = mysql_num_rows($result);
的所有正确行,但仍会继续选择timestamp
超过hit_counter
的行(即使它根本不应选择任何行) max_hits
大于或等于),而将>=
反转为>=
则不会返回任何结果,即使在数学上,它也是有效的。
我想也许我正在引用<=
作为一个错误的值,因为我不明白为什么它首先起作用?
我知道我的问题有点不确定,所以如果你需要澄清,请问:)。
任何答案/帮助将不胜感激!
更新
我已根据下面的许多优秀答案更新了查询,(删除了''包围max_hits
并将max_hits
更改为>=
,但它仍会返回不属于的行要包含在查询中。
这是我的完整代码的粘贴:http://pastebin.com/V4vXJr1w
以下是我的表格结构的链接:https://docs.google.com/spreadsheet/ccc?key=0AoELUDjfbpSXdEUybkgwQmpxUnVCWlZOZnFJdzFaQmc&hl=en_GB
答案 0 :(得分:3)
我认为如果删除'max_hits'周围的引号,它将会有效:
$query = "SELECT * FROM links WHERE timestamp >= '".$timestamp."' AND hit_counter <= max_hits AND overflow = 'NO'";
问题在于您指的是字符串'max_hits'而不是列值。
答案 1 :(得分:1)
$query = "SELECT * FROM links WHERE timestamp >= '$timestamp' AND hit_counter >= 'max_hits' AND overflow = 'NO'";
如果max_hits是一列,则需要丢失引号。
$query = "SELECT * FROM links WHERE timestamp >= '$timestamp' AND hit_counter >= max_hits AND overflow = 'NO'";
答案 2 :(得分:0)
我一眼就看错了两件事。
如果你想将一列与另一列进行比较,你不想引用列名,mysql只是将你的hit_counter列与字符串'max_hits'进行比较。
也许我误会了你,但我认为你有一个比你更大的迹象。它大致应该是:
SELECT * FROM links WHERE timestamp&gt; ='$ timestamp'AND hit_counter&lt; max_hits AND overflow ='NO'