我正在尝试从表“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以及如何实际使用数据感到困惑?
感谢您的帮助。
答案 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;
}