簡體   English   中英

使用PHP檢查MySQL中是否存在值

[英]Check if a value exists in MySQL with php

我一直在尋找stackoverflow,卻一直找不到真正可行的方法。 我有一個簡單的php應用程序

//Database credentials
$servername = "localhost";
$username = "root";
$password = "password";
$database = "database";

// Create connection to database
$db = new mysqli($servername, $username, $password, $database);

// Check connection for errors
if ($db->connect_error) {
    die("<h1>Connection to database failed: " . $db->connect_error) . "</h1>";
};

$username = $json['statuses'][0]['user']['screen_name'];
$userid = $json['statuses'][0]['user']['id_str'];

$sql = "SELECT * FROM log WHERE userid='" . $userid . "' LIMIT 1";

if ($db->query($sql)->num_rows > 0) {
    echo "<h4>This user already exists</h4>";
} else {
    //Put the userid into the database
    $sql = "INSERT INTO log (userid) VALUES ('" . $userid . "')";

    if ($db->query($sql) === TRUE) {
        echo "<h4>Added " . $username . " to the database</h4>";
    } else {
        echo "Error: " . $sql . "<br>" . $db->error;
    }
}

目前看來似乎很成功。 有時它將起作用,有時還會存在一條記錄,並且仍然會再次插入用戶ID以創建重復項。

phpmyadmin

就像@tadman所說的那樣,您的代碼是錯誤的。 來自變量$json數據直接插入查詢中-這不好...

簡單測試:

我設置 :

 $userid = "111111111a";

查詢:

 $sql = "SELECT * FROM log WHERE userid='111111111a' LIMIT 1";

返回TRUE,因為該用戶不存在於db中,

要么

 $userID ='111111111\' OR \'1=1';

查詢:

 $sql = "SELECT * FROM log WHERE userid='111111111' OR '1=1' LIMIT 1";

返回TRUE,因為1 = 1始終為true。

如果列userid為INT類型,則$ userid值將轉換為111111111並插入到log表中

暫無
暫無

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

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