2013-04-13 35 views
-4
$id = $_POST['idn']; 
$con=mysqli_connect("localhost","root","xyz","patient"); 
if (mysqli_connect_errno()) 
{ 
echo "Failed to connect to MySQL: " . mysqli_connect_error(); 
} 
$query = "SELECT count(*) FROM record WHERE ID='$id'"; 
$count = mysql_result(mysql_query($query),0); 
if($count > '0') 
{ 
id exist 
} 
else 
{ 
add id & record 
} 

什麼這裏不會檢查是否存在ID和錯誤增加了複製,其中ID是RC50001 RC50002 ...... ID表定義爲文本IDPHP SQL查詢錯誤,在SELECT語句中

+0

什麼是$ id的值? – Cooper

+0

,因爲例如5沒有找到(並且您的LIMIT只是無稽之談,因此查詢將會 - 如果曾經 - 只返回一行)。 – djot

+1

什麼是***完整錯誤***? echo $ query是什麼結果?停止使用'mysql_'函數。 – Kermit

回答

1

不要使用LIKE,使用=,您正在尋找對抗ID所以=精確匹配是正確的比較操作在這種情況下使用:

$query = "SELECT * FROM `record` WHERE `ID` = '$id' LIMIT 0 , 300"; 

你應該確認$id是格式喲你在將它插入查詢之前期待。 此外,您應該使用MySQLiPDO擴展名而不是mysql擴展名。

0

讓你的代碼迴應你的查詢,然後用類似MySQL工作臺或PHPMyAdmin的方式測試它。

如果你正在尋找一個ID,它將是確切的。你想在你的陳述中小心使用LIKE。例如。如果有人查找id ='1',它將返回一條記錄。 id LIKE'%1%'返回包含「1」的所有記錄。

這是一個更安全。特別是因爲根據您的示例,您沒有對ID進行任何操作。

<?php 
    $query = "SELECT count(*) FROM record WHERE ID='$id'"; 
    $count = mysql_result(mysql_query($query),0); 
    if($count > '0'){ 
    echo "ID already exists<br>"; 
    } else { 
    echo($query);   
    die(); 
    } 
?> 

我沒有測試它,但應該使用這樣的事情或MySQLi的語句,但你需要學會在這種風格代碼的方式。

<?php 
    try { 
     $dbh = new PDO('mysql:host=localhost;dbname=test', $user, $pass); 
     $query = "SELECT count(*) FROM record WHERE ID='$id'"; 
        //Checking for no results. 
     if(!empty($dbh->query($query))){ 
      echo "ID already exists."; 
     } else { 
      echo "ID does not exist."; 
     } 
     $dbh = null; 
    } catch (PDOException $e) { 
     print "Error!: " . $e->getMessage() . "<br/>"; 
     die(); 
    } 

?> 

哦,是的,記住:

警告:如果您的應用程序沒有趕上從 PDO構造拋出的異常,採取了Zend引擎的默認動作是 終止腳本並顯示回溯。此回溯曲線 可能會顯示完整的數據庫連接詳細信息,包括 用戶名和密碼。您有責任明確(通過catch語句)或通過 set_exception_handler()來捕獲此異常。

1

如果您只是在檢查數據庫中是否使用了ID,那麼返回使用ID的次數將會更有效,而不是返回每個匹配的記錄。

注意:這是使用MySQLi,因爲mysql_ *函數將在下一版本的PHP中被棄用(已經在測試版中)。您需要將所有mysql_*()函數更新爲mysqli_*()

$query = "SELECT COUNT(*) AS IDCount FROM `record` WHERE `ID` = '$id'"; 
$result = mysqli_query($query) or die("Couldn't execute ID check query."); 
$row = mysqli_fetch_assoc($result); 

if($row['IDCount'] > 0) 
{ 
    echo "ID already exists<br />"; 
} 
+0

看起來很熟悉。因爲他在他的例子中使用了mysql_query,所以當他複製和粘貼代碼時會中斷,儘管他應該使用這個或者一個PDO。 –

+0

哈哈,得愛那些重疊的帖子! :P MySQLi被設計爲可以非常容易地交換舊的mysql_ *函數......並且從PHP 5.5.0開始它們都被正式棄用! – Nerdwood

+0

我知道,但你需要注意他必須更新更多的代碼。由於他沒有從他的查詢中獲得結果,因此可能還有其他問題。 –

0

我想你可以使用while循環在數據庫中搜索匹配的id,而不是僅僅使用if-else語句。

樣本:

if($row != 0) 
{ 
    while ($row = mysql_fetch_assoc($query) 
    { 
    $row['id']; 
    }