2017-06-04 51 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