Проблема с получением данных PHP в базе данных - PullRequest
2 голосов
/ 04 апреля 2011

Хорошо, проблема в том, что ... я новичок, и я пытаюсь понять, что происходит. Я посылаю через html форму эти данные (имя, адрес электронной почты), используя POST в базе данных. Я понимаю логику всего этого, кроме в основном случается так, что каждый раз, когда я ввожу имя, любое имя, оно повторяет утверждение else: «уже есть пользователь с таким именем». и он отправляет обратно имя в базе данных. Когда ничего нет, он ничего не отправляет. Итак, вот кусок:

 $query= "SELECT* from users where username='".$_POST['name']."'";
        $result = mysql_query($query);
        if (!$result){


        $query = "INSERT into users (username, email, password) values
        ('".$_POST["name"]."', '".$_POST["email"]."',  
        '".$passwords[0]."')";
        $result = mysql_query($query);

        if ($result){
            echo "It's entered!";
        } else {
            echo "There's been a problem: ".mysql_error();
        }
     } else {

         echo "There is already a user with that name: <br />";
        $sqlAll = "select * from users";
         $resultsAll = mysql_query($sqlAll);
         $row = mysql_fetch_array($resultsAll);
           while ($row) {

              echo $row["username"]." -- ".$row["email"]."<br />";

           $row = mysql_fetch_array($result);

Ответы [ 5 ]

2 голосов
/ 04 апреля 2011

ESCAPEEEEE

Во-первых, вам нужно узнать о побеге.Вы никогда не слышали о маленьких Джонни ДРОП ТАБЛЕС?

http://xkcd.com/327/

Серьезный бизнес

Причина, по которой он всегда возвращается, заключается в том, что ответв $ result на самом деле тип данных ресурса.И это будет всегда, когда приведен как логическое значение будет правдой.(И так как ваш запрос не должен потерпеть неудачу).

Вы должны получить результат.Например.(Это не лучший способ, но это способ сделать это).

mysql_fetch_row(result)
2 голосов
/ 04 апреля 2011

Возможно, вы захотите проверить mysql_num_rows () , а не проверять результат! $. Я думаю, что если запрос будет успешным, вы вернете ресурс, даже если он содержит ноль строк.

Вы также можете прочитать: http://php.net/manual/en/security.database.sql-injection.php

1 голос
/ 04 апреля 2011

не вижу нарушений в вашем коде.Первый mysql_query выполняется без ошибок и всегда возвращает true.попробуйте проверить количество возвращаемых строк следующим образом:

if (mysql_num_rows($result) == 0) {
//insert record
} else {
// show alreay exists
}
1 голос
/ 04 апреля 2011

В соответствии с руководством , mysql_query вернет false при возникновении ошибки - "Для SELECT, SHOW, DESCRIBE, EXPLAIN и других операторов, возвращающих resultset, mysql_query () возвращает ресурс при успехе или FALSE приошибка. "

0 голосов
/ 04 апреля 2011

Прежде всего, вы проверяете:

if (!$result)

, который будет иметь значение true только в случае сбоя запроса.

Вы также должны очистить весь ввод перед использованием его в запросах SQL.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...