2016-07-12 2 views
0

У меня есть эта проблема с phpMyAdmin. Я создал свои простые скрипты php и mysql, и все работает нормально. Он подключается к моей базе данных mysql (удаленно с моим хостинг-провайдером) и фактически вставляет все необходимые поля в базу данных. проблема в том, что поля пустые. в них нет ничего. Вот мой код:Php MySQL простая форма вставляет пустоту

<?php 
$con = mysql_connect("myserverip","mydatabasename","my password"); 
if (!$con) 
    { 
    die('Could not connect: ' . mysql_error()); 
    } 

mysql_select_db("mydatabasename", $con); 

$sql="INSERT INTO nametable (firstname, lastname) VALUES('$_POST[firstname]','$_POST[lastname]')"; 

if (!mysql_query($sql,$con)) 
    { 
    die('Error: ' . mysql_error()); 
    } 
echo "1 record added"; 

mysql_close($con) 
?> 

HTML-очень просто, всего два поля ввода с именем и фамилией:

HTML-:

<html> 
<body> 
<h1>A small example page to insert some data in to the MySQL database using PHP</h1> 
<form action="insert.php" method="post"> 
Firstname: <input type="text" name="fname" /><br><br> 
Lastname: <input type="text" name="lname" /><br><br> 

<input type="submit" /> 
</form> 
</body> 
</html> 

Вся помощь ценится.

+2

Пожалуйста, не используйте [расширение базы данных mysql_'] (http://stackoverflow.com/questions/12859942/why-shouldnt-i-use-mysql-functions-in-php), оно устарело (ушло навсегда в PHP7). Специально, если вы просто изучаете PHP, тратите свои энергии на изучение расширений базы данных «PDO». [Начать здесь] (http://php.net/manual/en/book.pdo.php) его действительно довольно легко – RiggsFolly

+0

Можете ли вы добавить форму для этого? Если PHP работает, но не вставляет значения, то там, вероятно, проблема. – andrewsi

+0

Дайте мне минутку. –

ответ

0

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

$sql = " 
    INSERT INTO 
     nametable (firstname, lastname) 
    VALUES 
     ('" . $_POST['firstname'] . "', '" . $_POST['lastname'] . "')"; 

(пробельные добавлена ​​для удобства чтения)

Кроме того, как некоторые другие пользователи указали, так что это не должно использоваться mysql расширение для PHP has been deprecated. Кроме того, способ, которым вы строите свой запрос, открывает вам нечто вроде SQL injection, что очень опасно.

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

+1

Нет, помните, что это текстовые данные, поэтому им нужны одинарные кавычки вокруг значений данных! – RiggsFolly

+2

Нет. _string_ - это двойной кавычек, а одинарные кавычки, внутренние для строки, не будут иметь никакого значения, как интерпретировать эти значения. – andrewsi

+0

Небольшая поправка, поэтому я могу удержаться от соблазна к DV. Я надеюсь, что вы не возражаете. – RiggsFolly

Смежные вопросы