Почему это не экономит на базе данных? - PullRequest
0 голосов
/ 21 августа 2011

У меня есть форма ввода для образца php.

<form action="insert.php" method="post">
        <table>
            <tr>
                <td>First Name:</td>
                <td><input type="text" id="fname" name="fname" /></td>
            </tr>
            <tr>
                <td>Last Name:</td>
                <td><input type="text" id="lname" name="lname" /></td>
            </tr>
            <tr>
                <td>Age:</td>
                <td><input type="text" id="age" name="age" /></td>
            </tr>
            <tr>
                <td>&nbsp;</td>
                <td><input type="submit" value="Add Person!" /></td>
            </tr>
        </table>
    </form>

и insert.php выглядит так

<?php
    $host = "localhost";
    $user = "root";
    $pass = "";
    $con = mysql_connect($host, $user, $pass);
    $db = "phptest";    

    if(!$con)
    {
        die("Could not connect: " . mysql_error());
    }
    mysql_select_db($db,$con);
    $sql = "INSERT INTO persons (FirstName,LastName,Age) VALUES ('$_POST[fname]','$_POST[lname]','$_POST[age]')";
    mysql_query($sql,$con);
    mysql_close($con);
?>

Отлично работает для первого ввода. Когда я ввожу другие значения и нажимаю кнопку отправки, данные не сохраняются в базе данных. В базе данных он показывает только 1 строку, заполненную моим первым вводом. В чем проблема в коде для insert.php? Спасибо.

Ответы [ 3 ]

2 голосов
/ 21 августа 2011

Пожалуйста, также сделайте

echo mysql_error();

сразу после mysql_query (), чтобы узнать, если что-то не так, хотя ваш запрос выглядит довольно хорошо.

Также может помочь размещение структуры таблицы.* Возможно, вы забыли иметь идентификатор в своей таблице, для которого установлены primary_key и auto_increment *

0 голосов
/ 21 августа 2011

Создайте новое поле (например: Id) в своей таблице persons и установите его на auto_increment.

0 голосов
/ 21 августа 2011

Мое лучшее предположение заключается в том, что вы передаете данные в запрос, содержащий одну кавычку, что преждевременно приводит к завершению одной из строк в кавычках в запросе.

Не зная, что именно является ошибкой, я не могу быть уверен, однако. Вы должны проверять ошибки с чем-то вроде mysql_error(). Если вы используете это и покажете свое сообщение об ошибке, я смогу помочь вам больше.

Отбрасывание данных непосредственно из пользовательского ввода (что есть в $_POST) - очень плохая идея. Вам лучше использовать PDO и подготовленные заявления.

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

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