我有一个sqlquery,我一直在我的php页面中玩,但它并没有提取出准确的结果!我已经出演这么久了,现在我看不出有什么不对劲!我相信只有一个"或者'或者`在错误的地方!
<?
$result = mysql_query("SELECT ReReferral_ID FROM ReReferral Where (`ReReferral_Date` >= '" . $_POST["report_date_from"] ."-04-01 00:00:00' AND `ReReferral_Date` <= '" . $_POST["report_date_from"] ."-06-30 00:00:00') AND ReReferral_ReReferral ='1'");
$num_rows = mysql_num_rows($result);
echo $num_rows;
?>
感谢您的帮助!
答案 0 :(得分:1)
试试这个:
$rdate = mysql_real_escape_string($_POST["report_date_from"]);
$result = mysql_query("SELECT ReReferral_ID FROM ReReferral
WHERE `ReReferral_Date` BETWEEN CONCAT('$rdate','-04-01 00:00:00')
AND CONCAT('$rdate','-06-30 00:00:00')
AND ReReferral_ReReferral ='1' ");
答案 1 :(得分:1)
没有足够的信息来回答你的问题。
调试的一个步骤是验证您正在构造的字符串是您要执行的SQL语句。作为一个基本的例子:
$sqltext = "SELECT ReReferral_ID FROM ... ";
# for debugging echo out the SQL text to be executed:
echo $sqltext;
# also check the return from mysql_query
$result = mysql_query($sqltext) or die(mysql_error());
注意我正在抽搐使用已弃用的mysql_界面。对于这个世界中好和美丽的 love ,不要使用mysql_进行新的开发。请改用mysqli或PDO。
如果必须在SQL文本中包含用户提供的数据(而不是使用绑定变量),那么至少使用mysql_real_escape_string
函数来阻止SQL注入漏洞。