我正在尝试插入/更新MySql数据库,具体取决于数据库中是否已存在帖子(我使用唯一的user_id进行检查)。以下作品:
$select_query = "SELECT * ";
$select_query .= "FROM test ";
$select_query .= "WHERE user_id = '$user_id'";
$check_user_id = mysqli_query($connection, $select_query);
$query = "INSERT INTO test (";
$query .= " user_id, name, message";
$query .= ") VALUES (";
$query .= " '{$user_id}', '{$name}', '{$message}'";
$query .= ")";
$result = mysqli_query($connection, $query);
if ($result) {
echo "Success!";
} else {
die("Database query failed. " . mysqli_error($connection));
}
但是,当我将以下代码与if / else语句一起使用时,它不再起作用,尽管控制台报告“成功!” (意思是$ result有一个值)。任何帮助将不胜感激。感谢。
$select_query = "SELECT * ";
$select_query .= "FROM test ";
$select_query .= "WHERE user_id = '$user_id'";
$check_user_id = mysqli_query($connection, $select_query);
if (!$check_user_id) {
$query = "INSERT INTO test (";
$query .= " user_id, name, message";
$query .= ") VALUES (";
$query .= " '{$user_id}', '{$name}', '{$message}'";
$query .= ")";
} else {
$query = "UPDATE test SET ";
$query .= "name = '{$name}', ";
$query .= "message = '{$message}' ";
$query .= "WHERE user_id = '{$user_id}'";
}
$result = mysqli_query($connection, $query);
if ($result) {
echo "Success!";
} else {
die("Database query failed. " . mysqli_error($connection));
}
答案 0 :(得分:3)
据我了解你的代码。您正在尝试检查数据库中是否存在user_id。 我制作了一个简单的代码,我觉得它适用于我..
$select_query = mysql_query("SELECT * FROM test WHERE user_id = '$user_id'") or die (mysql_error());
$result = mysql_num_rows($select_query);
if(!$result){
$query = mysql_query("INSERT INTO test (user_id, name, message) VALUES ('$user_id', '$name', '$message')");
if($query){
echo "Success!";
}
else
{
die (mysql_error());
}
}
else{
$query2 = mysql_query("UPDATE test SET name='$name', message='$message' WHERE user_id = '$user_id'")
}
答案 1 :(得分:0)
mysql_query
返回操作标识符,而不是实际结果。这就是$check_user_id
始终为真的原因,因此您总是尝试更新(甚至不存在!)行。
您必须“阅读”mysql_query
的结果,例如使用
$check_user_id = mysql_num_rows( mysql_query($connection, $select_query) );
现在如果q $select_query
答案 2 :(得分:0)
此声明为您提供了结果的资源
$check_user_id = mysqli_query($connection, $select_query);
接下来检查if(!$check_user_id)
:由于否定!
,此条件的计算结果为false。因此,您的条件会转到else
部分,并且永远不会进入if
。
$result
始终具有值,因为您在脚本末尾调用它。
答案 3 :(得分:0)
由于您以前知道user_id,并假设它是表中的主键,您可以使用“ON DUPLICATE KEY UPDATE”子句:
$query = mysql_query("INSERT INTO test (user_id, name, message)
VALUES ('$user_id', '$name', '$message')
ON DUPLICATE KEY
UPDATE name='$name', message='$message';
");
只有一个查询的结果相同。
参考:http://dev.mysql.com/doc/refman/5.0/en/insert-on-duplicate.html
答案 4 :(得分:0)
使用代码在mysql中插入数据。
$query = mysql_query("INSERT INTO test set user_id = '$user_id', name = '$name', message = '$message'");
if($query){
echo "Success!";
}