簡體   English   中英

檢查MySQL中是否存在記錄(使用PHP)?

[英]Check existence of a record in MySQL(with PHP)?

我在phpMyAdmin中創建了一個小型數據庫(1個表)。 我要檢查的其中一個字段是“名稱”。 我想通過PHP驗證用戶在表單中鍵入的名稱是否存在於數據庫中。 在html中顯示來自DB的名稱列表,但用戶可能在表單中鍵入錯誤的名稱。 問題在於答案是否存在變化。

我有2個PHP文件: Connection.phpwelcome.php

連接

 <html> 
 <head>
 <title>Project</title>
 </head>
 <body>

 <?php
 mysql_connect("localhost","root","");
 mysql_select_db("e-card");

 $sql=mysql_query("SELECT * FROM person");
 $dbname="name";
 #$formula_adr="formula_adr";
 #$adress="adr";
 $line=mysql_fetch_assoc($sql);

 echo'Choose a name to whom you send e-card:<br/><br/>';
 echo $line[$dbname].'<br/>';
 while($line=mysql_fetch_assoc($sql))
 echo $line[$dbname].'<br/>';
 ?>
 <form action="welcome.php" method="POST">
 Nume: <input type="text" name="fname" />
 <input type="submit" value="Verify existance in DB"/>
 </form>    
 </body>
 </html>

歡迎

 <?php
 mysql_connect("localhost","root","");
 mysql_select_db("e-card");

 $sql=mysql_query("SELECT * FROM persoana");
 $dbname="name";
 $formula_adr="formula_adr";
 $adresa="adr";
 $linie=mysql_fetch_assoc($sql);

 if ($_SERVER['REQUEST_METHOD']=='POST' and isset($_POST['fname']))
 {
 $name = $_POST['fname'];

 while($line=mysql_fetch_assoc($sql))
 {
 if(strcmp($name,$line[$dbname]))
 {
 echo 'Found';
 }
 else
 {
 echo 'This name doesn't exist in DB';
 }
 }
 }
 ?>

謝謝你提前^ _-

<?php
mysql_connect(HOST, USERNAME, PASSWORD);
mysql_select_db(DB_NAME);

if($_POST) {
    $name = $_POST['fname'];

    // check if name exists in db
    $sql = "SELECT name FROM person WHERE name=' . mysql_real_escape_string($name) . '";
    $query = mysql_query($sql);

    if(mysql_num_rows($query) > 0) {
        // user exists
    } else {
        // user does not exist
    }
}

上面的腳本將起作用,並且還將使用內置的mysql_real_escape_string方法保護腳本免受SQL注入。 我還建議在以這種方式驗證數據時不要使用通配符(*)選擇器,因為查詢任何未使用的其他信息會浪費資源。

不要從表中獲取所有數據來比較名稱。 這樣做:

$sql=mysql_query("SELECT * FROM persoana where name like '$name%'");

只有在匹配時才會得到結果

我會按照這些步驟執行高級步驟。

1 - 在調用數據庫之前,使用javascript初始檢查客戶端是否輸入了某些內容。 您可以在javascript中使用過濾器來檢查該表單字段。

2 - 如果驗證輸入了*有用的內容 - 將表單字段值傳遞給另一個將解析該值的頁面或對象,然后查詢該表。

3 - 對包含數據的db表列使用已解析的值。 如果找到記錄,則返回它們。

使用SQL注入技術來防止可能在表單字段中鍵入邪惡內容的用戶進行惡意打算。

暫無
暫無

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

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