如果语句检查现有条目是否在数据库中

时间:2011-08-24 15:17:56

标签: php mysql

试图找出我的代码无效的原因。基本上我有一个像这样的elseif语句:

mysql_connect("localhost","xxxx","xxxxx");
mysql_select_db("xxxxxx");
$sql = "SELECT COUNT(DATE) FROM calendar";
$result = mysql_query($sql);
$row = mysql_fetch_assoc($result);

$checkdate = $row['DATE'];
$DATEFROM = $_POST['DATEFROM'];
$DAYCOUNT = $_POST['DAYCOUNT'];
$DAYS = $_POST['DAYS'];


if ( $DAYCOUNT < $DAYS ) { 
    header( 'Location: request_go_fail.php' );
}
else if ( $checkdate == $DATEFROM ) {
    echo "FAIL!";
}
else {

它不起作用,第一次检查(看看DAYCOUNT是否小于DAYS工作正常,但是当与DB中的条目进行比较时,它似乎没有这样做。似乎是查找的一些问题已经存在的数据,就像我将$ checkdate更改为已经在数据库中的条目一样,它运行良好。

非常感谢任何帮助:)

3 个答案:

答案 0 :(得分:2)

SELECT COUNT(DATE) FROM calendar不返回名为date的字段,print_r $ row变量来确认。最佳解决方案是将语句更改为SELECT COUNT(DATE) AS datecount FROM calendar,然后执行$checkdate = $row['datecount'];

但是在重新阅读你的代码片段时,我不确定你真的希望日历表中的DATE的 count ,以及目的究竟是什么,很难从代码片段中确定

此外,DATE是SQL中的保留字,而不是列名的最佳选择!

答案 1 :(得分:1)

您是否尝试打印$checkdate?如果那确实是你正在使用的SQL,我怀疑它是null。

我应该$row['COUNT(DATE)']我相信,或者您可以使用mysql_fetch_array$row[0],或者在SQL中使用AS

$checkdate = mysql_result($result, 0);

并一起跳过提取电话。

COUNT(DATE)会返回数据库btw中的非空DATE字段数,这真的是你想要的吗?

答案 2 :(得分:0)

由于sql命令,$ row变量中没有DATE键。使用它,它被称为Alias:

SELECT COUNT(DATE) AS DATE_COUNT FROM calendar

现在您有一个包含值的密钥DATE_COUNT。

$checkdate = $row['DATE_COUNT'];