将变量值与PHP中的查询结果进行比较

时间:2014-02-18 00:58:23

标签: php mysql sql arrays database

我正在尝试从表“totals”中提取所有“totalsDate”值,然后根据变量$ date插入新记录或更新现有记录。

//getting all the dates from the totals table and assigning to row
    $sqlDate = "SELECT totalsDate FROM totals";
    $query = mysqli_query($dbCon, $sqlDate);
    //$row = mysqli_fetch_array($query);

    while($row = mysqli_fetch_array($query)){
      $rowDate = $row['totalsDate'];

       //if statement to either update the totals table or create a new record
      if($rowDate = $date){

      $sqlThree = "UPDATE totals SET lodgements = '$lodgementsAfter' WHERE branch_name = '$branchTest' AND totalsDate = '$date'";
      $query = mysqli_query($dbCon, $sqlThree);

      }

      else {
      $sqlFour = "INSERT INTO totals VALUES(NULL, '$branchTest', 0, '$amount', 0,  '$date')";
      $query = mysqli_query($dbCon, $sqlFour);
    }



    }

更新部分有效,但我的其他声明永远不会被执行,并且无法输入新记录。我也收到了这个错误:

  

警告:mysqli_fetch_array()要求参数1为mysqli_result,布尔值在

中给出

我对使用mysqli_fetch_array以及如何实际使用数据感到困惑?

感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

其中一个问题是$query被覆盖在循环中;看到这里:

while($row = mysqli_fetch_array($query)){

    // ...
    $query = mysqli_query($dbCon, $sqlThree);
    // ...
}

您应该a)根本不存储mysqli_query()的结果,或b)选择不同的变量名称,例如$update_res = mysqli_query(...);

更好的是,使用单个查询来执行这两项操作:

INSERT INTO totals VALUES (NULL, :branch, 0, :amount, 0, :date) 
ON DUPLICATE KEY UPDATE lodgements = :lodgements

确保在表格中定义了正确的唯一约束。

答案 1 :(得分:0)

您的数据库查询不正确。您的查询无法获得良好的结果。错误是说它期望结果是一个数组,而不是。它的回归是虚假的。

阅读此mysqli_query

获得更多帮助。

你有权访问db命令行吗?查询返回了什么。您确定您的数据库连接信息是否正确?

我找到了。

 $rowDate = $date   should be $rowDate == $date or $rowDate === $date

你的sql结果是一个数组

$row[0] = "1st result"
$row[1] = "2nd result"
 ..etc

所以如果你有超过1个结果,那么它应该是多次更新/插入。你看到了吗?如果它只是一个结果那么显然2014-02-13,2014-02-26是不一样的。

 $sqlDate = "SELECT totalsDate FROM totals where totalsDate='" . $date . "'";

这将返回结果,只有具有$ date的记录。

 $rowcount=mysqli_num_rows($query);
if ($rowcount) < 1))
{
   insert;
}
else
{
   update;
}