php 使用php将数据插入/更新到MySql数据库
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/18159535/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
Inserting/updating data into MySql database using php
提问by sublimepremise
I am trying to insert/update the MySql database depending on whether a post already exists on the database (I am checking this with a unique user_id). The following works:
我正在尝试根据数据库中是否已存在帖子来插入/更新 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));
}
However, when I use the following code with an if/else statement, it does not work anymore, although the console reports "Success!" (meaning $result has a value). Any help would be greatly appreciated. Thanks.
但是,当我将以下代码与 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));
}
回答by user2593560
As i understand your code. you are trying to check if the user_id is existing in your database.. i made a simple code and i think its works for me..
据我了解您的代码。您正在尝试检查您的数据库中是否存在 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'")
}
回答by lejlot
mysql_query
returns the operation identifier, not the actual result. This is why $check_user_id
is always true, so you are always trying to update (even not existing!) rows.
mysql_query
返回操作标识符,而不是实际结果。这就是为什么$check_user_id
总是如此,所以你总是试图更新(甚至不存在!)行。
you have to "read" the result ofmysql_query
by for example using
你必须“阅读”的结果,mysql_query
例如使用
$check_user_id = mysql_num_rows( mysql_query($connection, $select_query) );
now it returns 0 (false) iff there were no results for q $select_query
现在它返回 0 (false) 如果 q 没有结果 $select_query
回答by woofmeow
This statement is giving you a resource to the result
此语句为您提供了结果的资源
$check_user_id = mysqli_query($connection, $select_query);
$check_user_id = mysqli_query($connection, $select_query);
next you are checking for if(!$check_user_id)
: this condition evaluates to false because of the negation !
. Thus your condition goes to the else
part and and never enters the if
.
接下来您要检查if(!$check_user_id)
:由于否定,此条件评估为假!
。因此,您的条件进入else
零件并且永远不会进入if
.
The $result
always has value because you are calling it towards the end of the script.
将$result
始终具有价值,因为你在呼唤它向脚本结束。
回答by juanra
Since you previously know the user_id, and assuming that is a primary key in the table, you could use "ON DUPLICATE KEY UPDATE" clause:
由于您之前知道 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';
");
Same result with only one query.
只有一个查询的相同结果。
Ref: http://dev.mysql.com/doc/refman/5.0/en/insert-on-duplicate.html
参考:http: //dev.mysql.com/doc/refman/5.0/en/insert-on-duplicate.html
回答by Indrajeet Singh
Use Code for data inserting in mysql.
使用代码在mysql中插入数据。
$query = mysql_query("INSERT INTO test set user_id = '$user_id', name = '$name', message = '$message'");
if($query){
echo "Success!";
}