2013-03-26 4 views
1

Привет, я не понимаю, почему этот код не вставляет данные из html text feilds в мою фактическую базу данных. Я пытаюсь попробовать его с помощью только First_Name для начала.Попытка отправить информацию о форме в базу данных PHP/MYSQL

В любом случае HTML-код, как следует:

<form action="Proform.php" name="Myform" method="post"> 

     <input type ="hidden" value="1" name="check_submit" /> 
     Please Enter First Name: <input type ="text" name="First_Name" /> <br /> 
     Please Enter Second Name: <input type ="text" name="Second_Name" /><br /> 
     Please Enter Email Address: <input type ="text" name="Email_Address" /><br /> 
     Please Enter A Password: <input type="password" name="Password" /><br /> 
     <input type ="submit" name"Submit" /><br /> 

    </form> 

И PHP и MYSQL это как следует:

<?php 

    $dbname='ecig'; 
    $dbhost='localhost'; 
    $dbpass='password'; 
    $dbuser='eciguser'; 



    $dbhandle = mysql_connect($dbhost, $dbuser, $dbpass) 
     or die("Unable to connect to MySQL"); 
    echo "Connected to MySQL<br>"; 


    $selected = mysql_select_db("ecig",$dbhandle) 
     or die("Could not select examples"); 



    $res=mysql_query("INSERT INTO Persons (First_Name, Second_Name) VALUES ('$_POST[First_Name]')"); 

    if (array_key_exists ('check_submit', $_POST)) 

    echo "Your Name is : {$_POST['First_Name']}<br />"; 
    echo "Your Second Name is : {$_POST['Second_Name']}<br />"; 
    echo "Your Email Address is : {$_POST['Email_Address']}<br />"; 
    echo "Your Password Is : {$_POST['Password']}<br />"; 

    ?> 

Он должен иметь что-то делать с этой строки кода, но я не могу определить его. Может ли кто-нибудь из вас определить, что происходит не так?

$res=mysql_query("INSERT INTO Persons (First_Name, Second_Name) VALUES ('$_POST[First_Name]')"); 

Любая помощь будет очень признательна. Благодарю .

+0

Добро пожаловать в переполнение стека! Пожалуйста, не используйте функции 'mysql_ *' для написания нового кода. Они больше не поддерживаются, и сообщество начало процесс [устаревания] (http://news.php.net/php.internals/53799). См. [Красная рамка] (http://uk.php.net/manual/en/function.mysql-connect.php)? Вместо этого вы должны узнать о [подготовленных заявлениях] (http://en.wikipedia.org/wiki/Prepared_statement) и использовать либо [PDO] (http://php.net/pdo), либо [MySQLi] (http: // php.net/mysqli). Если вы выберете PDO [здесь хороший учебник] (http://wiki.hashphp.org/PDO_Tutorial_for_MySQL_Developers). – War10ck

ответ

1
$res=mysql_query("INSERT INTO Persons (First_Name, Second_Name) VALUES ('$_POST[First_Name]')"); 

Я вижу пару вещей не так с этим запросом. Сначала вы говорите, что вы хотите только начать с имени, так что вам нужно только вставить в первое имя только колонки:

Persons (First_Name ) VALUES 
        ^

Затем, глядя, вы хотите, чтобы убедиться, что вы получаете переменную для заполнения в строка. Вы хотите использовать:

('{$_POST['First_Name']}') 
^ ^  ^^ 

Также рассмотрите тестирование ошибок, так как это более чем вероятно ошибка синтаксиса MySQL.Вы можете добавить

if (!$res) { 
    die('Invalid query: ' . mysql_error()); 
} 

ВНИМАНИЕ: Не используйте mysql_ *, как это было устаревшим PHP 5.5. Используйте MySQLi_ * или PDO. Кроме того, вы должны использовать подготовленные инструкции и SQL-экраны. Вы открыты для инъекций.

+0

Помогли выделенные базы данных теперь собирать данные. Благодаря ! – user2210046

0
$res=mysql_query("INSERT INTO Persons (First_Name, Second_Name) VALUES ('$_POST[First_Name]', '$_POST[Second_Name]')"); 
1

Вы говорите запрос, который вы собираетесь поставить first_name и last_name, но вы только предоставление first_name:

$res = mysql_query("INSERT INTO Persons (First_Name, Second_Name) VALUES ('$_POST[First_Name]')"); 

Try:

$res = mysql_query("INSERT INTO Persons (First_Name, Second_Name) VALUES ('$_POST[First_Name]', '$_POST[Lirst_Name]')"); 
1

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

$res=mysql_query("INSERT INTO Persons (First_Name, Second_Name) VALUES ('$_POST[First_Name]')"); 

Должно быть:

$res=mysql_query("INSERT INTO Persons (First_Name, Second_Name) VALUES ('$_POST[First_Name]', '$_POST[Last_Name]')"); 
1

Вы только передавая одно значение в

$ Рез = mysql_query ("INSERT INTO Лица (First_Name, Second_Name) VALUES ('$ _POST [First_Name] «)");

, а в вашем заявлении вставки вы вставляете 2 значения, имя и второе имя.

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

$res=mysql_query("INSERT INTO Persons (First_Name, Second_Name) VALUES ('$_POST[First_Name]', '$_POST[Second_Name]')");

1

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

добавьте в код PHP:

$firstname    = $_POST['First_Name']; 
$secondname  = $_POST['Second_Name']; 

, а затем изменить запрос:

$res=mysql_query("INSERT INTO Persons (First_Name, Second_Name) VALUES ('".$firstname."', '".$lastname."')");