PHP如果不是空行,则执行更新或插入
这段代码有什么问题。若表是空的,我不能进入insert函数,它总是在进行更新。有人能帮我解决这件事吗PHP如果不是空行,则执行更新或插入,php,mysqli,Php,Mysqli,这段代码有什么问题。若表是空的,我不能进入insert函数,它总是在进行更新。有人能帮我解决这件事吗 while ($row = $result->fetch_object()) { if ($result->num_rows > 0) { $updatequery = sprintf("UPDATE stat_mailings SET cat_id='%s', mailing_name='%s', mailing_uni
while ($row = $result->fetch_object()) {
if ($result->num_rows > 0) {
$updatequery = sprintf("UPDATE stat_mailings SET cat_id='%s', mailing_name='%s', mailing_unique_id='%s', segment_id='%s',
campaign_id='%s', landing_page='%s', total_sent='%s' WHERE mailing_id='%s'",
$row->category_id,
mysqli_real_escape_string($mysqli, $row->mailing_naam),
$row->unique_id,
$row->mailing_segment,
mysqli_real_escape_string($mysqli, $row->utm_campaign),
mysqli_real_escape_string($mysqli, $row->landing_page),
$row->mailing_total_sent,
$row->id
);
$mysqli->query($updatequery);
echo $error = $mysqli->error;
} else {
$insertquery = sprintf("INSERT INTO stat_mailings SET mailing_id='%s', cat_id='%s', mailing_name='%s', mailing_unique_id='%s', segment_id='%s',
campaign_id='%s', landing_page='%s', total_sent='%s'",
$row->id,
$row->category_id,
mysqli_real_escape_string($mysqli, $row->mailing_naam),
$row->unique_id,
$row->mailing_segment,
mysqli_real_escape_string($mysqli, $row->utm_campaign),
mysqli_real_escape_string($mysqli, $row->landing_page),
$row->mailing_total_sent
);
$mysqli->query($insertquery);
echo $error = $mysqli->error;
}
Mysql的强大功能正是为了实现这一目的——支持重复查询。
看起来像
INSERT INTO t SET f1=val,f2=val2 ON DUPLICATE KEY UPDATE f1=val,f2=val2
等等。仅确保键字段上有唯一索引。
因此,您可以摆脱SELECT查询及其结果检查 Mysql的强大功能正是为了实现这一目的——支持重复查询。
看起来像
INSERT INTO t SET f1=val,f2=val2 ON DUPLICATE KEY UPDATE f1=val,f2=val2
等等。仅确保键字段上有唯一索引。
因此,您可以摆脱SELECT查询及其结果检查 $result->num_rows总是大于0。检查$result->num_rowsYup的值,我知道,但是如何解决这个问题,它会工作吗?我想不出来..就像我说的,检查数值。您的查询总是返回超过0行,代码不会进入insert partRemove while循环并重试。$result->num_rows总是大于0。检查$result->num_rowsYup的值,我知道,但是如何解决这个问题,它会起作用?我想不出来..就像我说的,检查数值。您的查询总是返回超过0行,并且代码在循环并重试时不会进入insert partRemove。