Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用php将数据插入/更新到MySql数据库_Php_Mysql_Insert_Sql Update - Fatal编程技术网

使用php将数据插入/更新到MySql数据库

使用php将数据插入/更新到MySql数据库,php,mysql,insert,sql-update,Php,Mysql,Insert,Sql Update,我正在尝试插入/更新MySql数据库,这取决于数据库上是否已经存在post(我正在使用唯一的用户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 IN

我正在尝试插入/更新MySql数据库,这取决于数据库上是否已经存在post(我正在使用唯一的用户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语句中使用以下代码时,它不再工作,尽管控制台报告“Success!”(意味着$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));
}

mysql\u query
返回操作标识符,而不是实际结果。这就是为什么
$check\u user\u id
总是正确的,所以您总是试图更新(甚至不存在!)行

您必须“读取”mysql\u查询的结果,例如使用

$check_user_id = mysql_num_rows( mysql_query($connection, $select_query) );

现在,如果q
$select\u query没有结果,则返回0(false)。此语句为结果提供了资源

$check\u user\u id=mysqli\u query($connection,$select\u query)

接下来检查
如果(!$check\u user\u id)
:由于否定
,此条件的计算结果为false。因此,您的情况会转到
else
部分,并且不会进入
if


$result
总是有价值的,因为您在脚本末尾调用它。

我理解您的代码。您正在尝试检查数据库中是否存在该用户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'")
}

由于您以前知道用户id,并且假设该id是表中的主键,因此可以使用“ON DUPLICATE key UPDATE”子句:

只有一个查询的结果相同


Ref:

使用代码在mysql中插入数据

$query = mysql_query("INSERT INTO test set user_id = '$user_id', name = '$name', message = '$message'");
if($query){
    echo "Success!";
}
$query = mysql_query("INSERT INTO test set user_id = '$user_id', name = '$name', message = '$message'");
if($query){
    echo "Success!";
}