2014-01-14 6 views
0

Я работаю на веб-странице, и я хочу, чтобы иметь возможную кнопку удаления, которая работает следующим образом:поиск по существующим данным, двойной, если PHP

- you introduce a country ISO code which you want to delete 
- click the button 
- if the country has players participating (competitor table, ISO_country_code column) then prints the message that this cannot happen 
- if not, deletes the country from country table 

Я попытался следующим образом, но я не Не знаю, как создать условие второго, если для достижения соответствующей работы.

$connect=mysqli_connect("localhost","root","","mydatabase"); 
if (mysqli_connect_errno()) 
    { 
    echo "Failed to connect to MySQL: " . mysqli_connect_error(); 
    } 
else 
{ 
    $result=mysqli_query($connect,"SELECT COUNT(*) FROM competitor 
     WHERE ISO_country_code='".$_POST['countrycode']."')") 
    if ($result>0) 
    { 
     echo 'The following country is involved with players, so it can not be deleted!</br></br>'; 
    } 
    else (mysqli_query($connect,"DELETE FROM country WHERE  ISO_country_code='".$_POST['countrycode']."'")); 
    { 
     echo 'The following country was deleted: '.$_POST["countrycode"]."</br>"; 
    } 
}  
+0

еще => еще если? – njzk2

+0

обратите внимание, что '1 '; страна с отбрасыванием; '' 'в сообщении было бы довольно драматичным – njzk2

+0

Что вы подразумеваете под этим? – rafanadal

ответ

0

Ваш $result не содержащий не целое число, то возвращается истинным или ложным (или объект, при использовании объектно-ориентированный способ).

Если вы хотите проверить, сколько результатов возвращает ваш запрос, вы должны заменить свой $ result функцией mysqli_num_rows($result).

И вы должны взглянуть на prepared statements, чтобы предотвратить внедрение SQL.

Во-первых, вы должны создать подготовленное заявление Вашего запроса с:

$stmt = mysqli_prepare($connect,"SELECT * FROM competitor WHERE ISO_country_code=?"); 

Затем связать параметр на заявление (s обозначает "String"):

mysqli_stmt_bind_param($stmt,"s",$_POST['countrycode']); 

И выполнить ваше заявление:

mysqli_stmt_execute($stmt); 

Вы можете получить результаты, например, с mysqli_stmt_fetch($stmt).

0

У вас были некоторые синтаксические ошибки +, вероятно, не было найдено ни одного ряда строк, которые вы искали.

$connect=mysqli_connect("localhost","root","","mydatabase"); 
if (mysqli_connect_errno()) 
    { 
    echo "Failed to connect to MySQL: " . mysqli_connect_error(); 
    } 
else 
{ 
    $result=mysqli_query($connect,"SELECT * FROM competitor 
     WHERE ISO_country_code='".$_POST['countrycode']."'"); 
    $rows = mysql_num_rows($result); 
    if ($rows>0) 
    { 
     echo 'The following country is involved with players, so it can not be deleted!</br></br>'; 
    } 
    else { 
     mysqli_query($connect,"DELETE FROM country WHERE ISO_country_code='".$_POST['countrycode']."'"); 
     echo 'The following country was deleted: '.$_POST["countrycode"]."</br>"; 
    } 
} 
+0

это хорошая точка, но все равно входит во второй, если не стоит. – rafanadal

+0

@rafanadal, как вы это понимаете? – NewInTheBusiness

+0

Был хороший ответ, мне пришлось использовать mysqli_num_rows – rafanadal

0

Попробуйте это ..

if(mysql_num_rows($result) > 0) 
    { 
    echo "cannot delete"; 
    } 
    else if(mysql_num_rows($result) == 0) 
    { 
    //write the query for deletion 
    echo "deleted"; 
    } 
Смежные вопросы