这里有两个不同的查询。第一个查询针对具有相同item_code的两个表,第二个表仅针对具有item代码的表1。我添加console.log来在另一个页面上运行脚本。我的代码的过程是,如果第一个查询(针对两个表的查询)未能执行,则执行第二个查询(仅针对表1的查询)。两个查询都正确执行,但我在console.log上收到了这个错误。
"
注意:试图获取C:''exampleplite''htdocs''edit.php中非对象的属性第21,23,25
行0"
第21、23和25行的错误是我的if-else语句。我需要获取console.log 1
。
为什么?
任何帮助都将不胜感激。
两张表都有项目代码A000321
table 1 | table 2
|
item_code | item_code
------------|--------------
A000321 | A000321
只有表1的项目代码为A000321
table 1 | table 2
|
item_code | item_code
------------|--------------
A000321 |
更新.php
<?php
$val1_id= $_POST['val1_id'];
$val1_item_copy= $_POST['val1_item_copy'];
$val1_catcode= $_POST['val1_catcode'];
$val1_itemcode= $_POST['val1_itemcode'];
$sql = $mysqli->query("
UPDATE code t1
INNER JOIN
app t2
ON t2.item_code= t1.item_code
SET t1.item = '$val1_item_copy',t2.item_name = '$val1_item_copy'
WHERE t1.item_code = '$val1_itemcode' AND t1.cat_code = '$val1_catcode';
")or die('There was an error running the query [' . $mysqli->error . ']');
if(($sql->num_rows)>= 1){
echo '1';
} else if(($sql->num_rows) == 0) {
$sql1 = $mysqli->query("UPDATE code SET item='$val1_item_copy' WHERE id='$val1_id'")or die('There was an error running the query [' . $mysqli->error . ']');
if(($sql1->num_rows)>= 1){
echo '1';
} else {
echo '0';
}
}
?>
由于更新查询成功,您可能会得到"1"。这并不意味着它做了任何改变,只是它没有崩溃。
您可以通过检查来检查受影响的记录
printf("Affected rows (Non-Select): %d'n", $mysqli->affected_rows);
我只是编辑了一些细节。我用了if($mysqli->affected_rows >= 1)
而不是if(($sql->num_rows)>= 1)
if($mysqli->affected_rows >= 1) {
echo '1';
} else {
$sql1 = $mysqli->query("UPDATE code SET item='$val1_item_copy' WHERE id='$val1_id'")or die('There was an error running the query [' . $mysqli->error . ']');
if($mysqli->affected_rows >= 1) {
echo '1';
} else {
echo '0';
}
}