2017-06-04 47 views
0

我有以下代碼:PHP:爲什麼else塊不工作?

<form action="" method="POST"> 
    <input id="delete" name="delete" placeholder="Name" type="text"></b> 
    <input type="submit" name="deleteButton" value="Go!"> 
</form> 

<?php 
if (isset($_POST['deleteButton'])) { 
    $temp = $_POST['delete']; 
    $deleteSQL = "DELETE FROM `berater` WHERE `Nachname` LIKE '$temp' OR `Vorname` LIKE '$temp' OR CONCAT(Vorname,' ', Nachname) LIKE '%$temp%'"; 
    $searchSQL = "SELECT FROM `berater` WHERE `Nachname` LIKE '$temp' OR `Vorname` LIKE '$temp' OR CONCAT(Vorname,' ', Nachname) LIKE '%$temp%'"; 
    $search = mysqli_query($db_link, $searchSQL); 
    $loeschen = mysqli_query($db_link, $deleteSQL); 

    if (!$search) { 
     echo "Kein Datensatz gefunden!"; 
    } else { 
     echo "$temp erfolgreich gelöscht."; 
    } 
} 

我是新來的PHP,並認爲mysqli_query返回false如果名稱未在數據庫中找到。我在這裏做錯了什麼?

+1

false是關於錯誤,否則您必須檢查結果對象。 –

+0

您可以不選擇任何內容,並且可以成功搜索 – rtfm

回答

0

嘗試使用mysqli_num_rows

if (mysqli_num_rows($search)==0) { 
    echo "Kein Datensatz gefunden!"; 
} else { 
    echo "$temp erfolgreich gelöscht."; 
} 
1

根據mysqli_query() documentation

返回false上失敗。對於成功的SELECT,SHOW,DESCRIBE或 EXPLAIN查詢,mysqli_query()將返回一個mysqli_result對象。對於 其他成功的查詢mysqli_query()將返回TRUE。

if (!$search)替換爲if (mysqli_num_rows($search) > 0)以檢查這樣的行是否存在。


順便提一下,此代碼不能用於生產的:它很容易受到SQL注入式攻擊。我建議您在使用數據庫之前閱讀本文:http://php.net/manual/en/security.database.sql-injection.php