2015-06-19 7 views
1

У меня есть этот код, который позволяет пользователю удалять только свои темы. Он работает, но в том случае, если пользователь не тот, кто разместил тему, он все еще получает сообщение: Тема была удалена, тогда как он должен получить: вы не сделали эту тему. Оператор else не работает.Удалить тему из базы данных

if(isset($_SESSION['username'])) 
{ 
    $uid = $_SESSION['uid']; 
    $id=$_GET['id']; 

    $check = mysql_query("SELECT * FROM topics WHERE id = '$id' AND topicCreator = '$uid'"); 
    if($check){ 
     $query1=mysql_query("delete FROM topics WHERE id='$id' AND topicCreator='$uid'"); 
     echo "<p>Topic has been successfully deleted. <a href='index.php'>Click here to return to home page.</a>"; 
    } 
    else{ 
     echo "<p><b>ERROR: You didnt make this topic."; 
    } 
} 

Я не знаю, почему оператор else не запускается.

$ check - это узнать, зарегистрирован ли пользователь, который вошел в систему, тот, кто создал эту тему.

(PS:. Я переключиться на Mysqli раз это работает)

+1

Если вы можете, вы должны [прекратить использование '' mysql_ * функции] (http://stackoverflow.com/questions/12859942/why-shouldnt-i-use-mysql-functions-in- PHP). Они больше не поддерживаются и [официально устарели] (https://wiki.php.net/rfc/mysql_deprecation). Узнайте о [подготовленном] (http://en.wikipedia.org/wiki/Prepared_statement) [заявлениях] (http://php.net/manual/en/pdo.prepared-statements.php) и рассмотрите возможность использования PDO , [это действительно не сложно] (http://jayblanchard.net/demystifying_php_pdo.html). –

+0

[Ваш скрипт находится под угрозой для SQL Injection.] (Http://stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in-php) –

+1

'$ check' - это объект. Это всегда будет правдой, даже если запрос ничего не возвращает. –

ответ

1

В комментарии предполагают, вы не можете проверить против самого ресурса. Попробуйте:

if(isset($_SESSION['username'])) { 
    $uid = $_SESSION['uid']; 
    $id=$_GET['id']; 
    $check = mysql_query("SELECT * FROM topics WHERE id = '$id' AND topicCreator = '$uid'"); 
    $count = mysql_num_rows($check); 
    if($count) { 
     // $count is greater than 1 hence TRUE 
     $query1=mysql_query("delete FROM topics WHERE id='$id' AND topicCreator='$uid'"); 
     echo "<p>Topic has been successfully deleted. <a href='index.php'>Click here to return to home page.</a>"; 
    } else{ 
     // $count is 0 or FALSE - no rows returned 
     echo "<p><b>ERROR: You didnt make this topic."; 
    } 
} 
+0

Я получил его работу, просто изменил if ($ check) на if (mysql_fetch_assoc ($ check)) – Johnny