INSERT INTO таблица базы данных, из формы не работает.SQL - PullRequest
2 голосов
/ 18 августа 2011

Давайте перейдем непосредственно к моей проблеме, код, который я здесь написал, не записывается в мою базу данных, и я не могу понять, почему.На данный момент я просто пытаюсь разобраться с php и sql, поэтому нет смысла в этой форме, кроме обучения.Вот ошибка, которую я получаю (первое предложение «подключено к базе данных» взято из моего оператора if):

«Подключено к databaseError: в синтаксисе SQL есть ошибка; проверьте руководство, соответствующее вашемуВерсия сервера MySQL для правильного синтаксиса для использования рядом с '' test '(' name ') VALUES (' daniel ')' в строке 1 "

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

Надеюсь, если это будет решено, этот вопрос прояснит соединение с базой данных и запись в базуиз формы в один удар.Заранее спасибо, ребята, и вот мой код.

HTML

<form action="insert.php" method="post">
Name: <input type="text" name="namefield" />
<input type="submit" />
</form>

PHP (insert.php)

<?php
$dbhost  = 'localhost';
$dbname  = 'carbon_db';
$dbuser  = 'username';
$dbpass  = 'password'; 

$con = mysql_connect($dbhost, $dbuser, $dbpass);

if($con == FALSE)
{
    echo 'Cannot connect to database' . mysql_error();
}
else
{
    echo 'Connected to database';
}

mysql_select_db($dbname, $con);


$sql="INSERT INTO 'test' ('name') 
VALUES ('$_POST[namefield]')";

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

mysql_close($con)
?>

Ответы [ 5 ]

6 голосов
/ 18 августа 2011

Бросьте кавычки вокруг названия таблицы или измените их на обратные галочки:

Измените:

$sql="INSERT INTO 'test' ('name') VALUES ('$_POST[namefield]')";

На:

$sql="INSERT INTO test ('name') VALUES ('$_POST[namefield]')";

Или

$sql="INSERT INTO `test` ('name') VALUES ('$_POST[namefield]')";
4 голосов
/ 18 августа 2011

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

попробуйте с

$sql = "INSERT INTO `test` (`name`) VALUES ('".$_POST['namefield']."')";
3 голосов
/ 18 августа 2011

Измените одинарные кавычки вокруг имени таблицы и имени столбца на обратные галочки.Или избавьтесь от них всех вместе.

$sql="INSERT INTO `test` (`name`)  VALUES ('{$_POST['namefield']}')";

Кроме того, не следует ссылаться на ассоциативные массивы ($_POST) непосредственно в строке без использования синтаксиса {} или разбиения строки - что вы сделализдесь выдается E_NOTICE , и его следует избегать.

Внимательно прочитайте это - вы будете поражены тем, что вы можете (и не можете) делать в законном порядке в строках PHP...

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

попробуйте использовать `вместо 'при обращении к именам таблиц / столбцов

$sql="INSERT INTO `test` (`name`) 
VALUES ('$_POST[namefield]')";
1 голос
/ 18 августа 2011

Удалите одинарные кавычки вокруг вашего оператора sql и замените их обратными ссылками (даже если они не нужны):

$sql="INSERT INTO `test` ('name') 
VALUES ('$_POST[namefield]')";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...