我需要将许多文档的详细信息(名称,ID,编号)插入数据库(如果它们尚不存在),如果它们存在,我只需要对任何更改的信息进行更新。我已经到达以下代码但它不起作用。我是新手,需要帮助。
foreach($A->Documents -> Document as $Document)
{
$query = "SELECT * from table where id = '".$Document->id."'";
$outcome = mysql_query($query) or die(mysql_error());
if(($outcome)&&(mysql_num_rows($result)>0)){
echo "Document already available" ;
while($row = mysql_fetch_object($outcome)){
if(!($outcome->name == $document->name)){
$update= "UPDATE table SET name= '.$Document->Name.'";
mysql_query($update) or die(mysql_error());
}
else
{
$insert= "INSERT table SET name= '.$Document->Name.'";
mysql_query($update) or die(mysql_error());
}
}
}
}
答案 0 :(得分:1)
使用$row->name
代替$outcome->name
。而你的INSERT
陈述是错误的。
while($row = mysql_fetch_object($outcome)){
if(!($row->name == $document->name)){
$update = "UPDATE table SET name ='".$Document->Name."' WHERE id = ".$Document->id;
mysql_query($update) or die(mysql_error());
}
else {
$insert = "INSERT INTO table (name) VALUES('".$Document->Name."')";
mysql_query($insert) or die(mysql_error()); // $insert not $update
}
}
注意:停止使用
mysql_*
功能!请改用PDO
或mysqli_*
。并使用prepared statements
答案 1 :(得分:0)
更改
mysql_query($update) or die(mysql_error());
要:
$insert = INSERT into table_name values(" values");
mysql_query($insert) or die(mysql_error());
<\ n>在其他情况下
答案 2 :(得分:0)
问题在于if语句
中的 $ result 变量(if(($ outcome)&amp;&amp;(mysql_num_rows($ result)&gt; 0)){)
它应该是$结果,因为您将查询输出初始化为$ outcome变量
答案 3 :(得分:-1)
首先,不要使用mysql_函数。阅读docs(阅读警告)。 使用mysqli或PDO代替。
然后,您的INSERT语句错误。
INSERT INTO table (col1) VALUES (value_for_col1);