我目前正在使用jquery的ajax功能或他们称之为的任何功能。从mysql数据库加载数据。它的工作正常,但是这个的内置功能之一是当你按退格键时加载数据库上的所有数据,并且文本框上没有剩下的字符。
这是我的疑问:
SELECT * FROM prod_table WHERE QTYHAND>0 AND PRODUCT LIKE '$prod%' OR P_DESC LIKE '$desc%' OR CATEGORY LIKE '$cat%'
如您所见,我只想加载手头数量大于0的产品。
我正在使用此代码与php文件进行通信,该文件包含查询:
$('#inp').keyup(function(){
var inpval=$('#inp').val();
$.ajax({
type: 'POST',
data: ({p : inpval}),
url: 'querys.php',
success: function(data) {
$('.result').html(data);
}
});
});
是否可以过滤它输出的数据,这样当我按下退格键并且没有剩下的字符时。唯一要展示的产品是数量大于0的产品吗?
答案 0 :(得分:2)
我认为您所要做的就是将查询更改为:
SELECT *
FROM prod_table
WHERE QTYHAND>0
AND (
PRODUCT LIKE '$prod%'
OR P_DESC LIKE '$desc%'
OR CATEGORY LIKE '$cat%'
)
不是100%确定它在SQL中是否相同,但大多数情况下,AND
优先于OR
。因此,您的原始查询将如下所示:
WHERE (... AND ...) OR ... OR ...
现在,如果您有一个空字符串,那么"something LIKE '%'"
将始终匹配,并且只有一个OR
必须匹配才能在结果集中包含该记录。