簡體   English   中英

使用php將數據插入/更新到MySql數據庫

[英]Inserting/updating data into MySql database using php

我正在嘗試插入/更新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));
}

據我了解你的代碼。 你試圖檢查你的數據庫中是否存在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'")
}

mysql_query返回操作標識符,而不是實際結果。 這就是$check_user_id始終為true的原因,因此您總是嘗試更新(甚至不存在!)行。

你必須通過例如使用來“讀取” mysql_query的結果

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

現在它返回0(false)iff沒有q $select_query結果

此語句為您提供結果的資源

$check_user_id = mysqli_query($connection, $select_query);

接下來你要檢查if(!$check_user_id) :由於否定,這個條件評估為false ! 因此,您的條件將轉到else部分,並且永遠不會進入if

$result始終具有值,因為您在腳本末尾調用它。

由於您以前知道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

使用代碼在mysql中插入數據。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM