Почему SQL не показывает строку таблицы? - PullRequest
0 голосов
/ 28 декабря 2011

Я четко сделал аккаунт на register.php.Затем, когда я тестирую код в разделе SQL, я получаю показанные строки 0 - 0 (один итог, запрос занимает 0,0010 с).Несмотря на то, что есть учетная запись, он возвращает, что ее нет.

Вот код:

<?php
    $db_host = "localhost";
    $db_username = "izzydog";
    $db_name = "challenge1";
    $db_password = "********";
    $tbl_name = "database1"; // Table name]
    $database1 = 'database1';

    // Connect to server and select database.
    $conn = mysql_connect("localhost", "izzydog", "********") or die("cannot connect");
    mysql_select_db("challenge1",$conn)or die("cannot select DB");

    // Username and password sent from form
    $myusername = $_POST['myusername'];
    $mypassword = $_POST['mypassword'];

    // To protect MySQL injection (more details about MySQL injection)
    $myusername = stripslashes($myusername);
    $mypassword = stripslashes($mypassword);
    $myusername = mysql_real_escape_string($myusername);
    $mypassword = mysql_real_escape_string($mypassword);

    $sql = "SELECT * FROM $database1 WHERE username='$myusername' AND password='$mypassword'";
    $result = mysql_query($sql);

    // Mysql_num_row is counting table row
    $count = mysql_num_rows($result);
    // If result matched $myusername and $mypassword, table row must be 1 row

    if ($count == 1) {
        session_register('myusername');
        session_register('mypassword');
        header('location:login_success.php');
    }
    else {
        echo 'Wrong Username or Password';
    }
?>

Ответы [ 2 ]

1 голос
/ 28 декабря 2011

Вы должны выяснить, правильно ли настроены ваши настройки phpMyAdmin и подключаются ли они к нужной базе данных, смотрите ли вы на нужную таблицу и т. Д. Вы не предоставили много информации, чтобы четко сформулировать вашу проблему.

Кроме того, вы используете оператор SELECT в опубликованном вами коде, который будет возвращать результаты из таблицы базы данных. Вы должны использовать инструкцию INSERT в SQL для вставки новых строк в вашу базу данных.

Если вам нужна помощь для сценария регистрации или входа, вот хороший пример работы с тем, что я написал недавно: https://gist.github.com/1099006

0 голосов
/ 28 декабря 2011

Ваш сценарий не вставляет ничего, что вводит в заблуждение, даже если вы говорите, что у вас есть записи, поэтому, возможно, как сказал Шомз, проверьте, что ваши критерии соответствуют при выходе, но также не должны быть

$sql = "SELECT * FROM $database1 WHERE username='$myusername' AND password='$mypassword';"

больше похоже на:

$sql = "SELECT * FROM " . $database1 . "WHERE username='" . $myusername . "' AND password='" . $mypassword . "';"

Мой r.php файл

<?php
    /**
     * TODO
     *  - validate post data before proceeding with database connection etc
     *    regex password ((?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{8,20})
     *    regex email ^[_A-Za-z0-9-]+(\\.[_A-Za-z0-9-]+)*@[A-Za-z0-9]+
     *                (\\.[A-Za-z0-9]+)*(\\.[A-Za-z]{2,})$
     *  - add salt field
     *  - generate random salt and hash password
     *  - add status field default 0
     *  - add email confirmation which will update status field to 1
     */

    // Get post data
    $username = $_POST['username'];
    $password = $_POST["password"];
    $email = $_POST["email"];

    // Init connection
    $conn = mysql_connect("localhost","foo","bar") or die ("CONNECTION FAILURE");

    // Connect to database
    mysql_select_db("test",$conn);

    // The insert statement
    $query = sprintf("INSERT INTO usr(name,password,email) VALUES ('%s', '%s', '%s')",
                mysql_escape_string($username), mysql_escape_string($password), mysql_escape_string($email));

    // Execute insert statement
    mysql_query($query) or die("INSERT QUERY FAILURE");

    // Test entry remove when OK
    $result = mysql_query("SELECT * from usr");
        while ($row = mysql_fetch_array($result)) {
        echo $row['name'] . '<br/>';
    }
    // Test entry end
?>

Мой HTML-файл:

<html>
    <head>
        <title>
            Test PHP
        </title>
    </head>
    <body>
        <form action="r.php" method="post">
            <ul>
                <li>Name: <input type="text" name="username" /></li>
                <li>Password: <input type="text" name="password" /></li>
                <li>Email: <input type="text" name="email" /></li>
            </ul>
            <input type="submit" />
        </form>
    </body>
</html>

Я использую недавний по умолчанию WAMP установить.Возможно, стоит потратить время на получение Xdebug , который, я думаю, был настроен по умолчанию с версией WAMP и убедился в строгости проверки ошибок и т. Д.

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