Проблема с простой формой PHP-MySQL - PullRequest
2 голосов
/ 27 июля 2011

Я хочу сделать 2 поля ввода для моей базы данных MySQL. Я подключаюсь к базе данных без проблем и даже могу опубликовать, если захочу, но форма выдает ошибку. (Я уже подключен к базе данных на данный момент, и я могу проверить, что работает)

Это форма:

<form action="insert.php" method="post">
Title: <input type="text" name="title" />
Privacy: <select type="text" name="privacy" />
  <option value="public">Publico</option>
  <option value="private">Privado</option>
</select>
<input type="submit" />
</form>

Это файл insert.php:

<?  
mysql_select_db("copoetry", $con);
$sql="INSERT INTO Poems (Title, Privacy)
VALUES
('$_POST[title]','$_POST[privacy]')";

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

Когда я нажимаю "Отправить", я получаю эту ошибку:

Warning: mysql_select_db(): supplied argument is not a valid MySQL-Link resource in /home/content/02/6945202/html/copoetry/insert.php on line 2

Warning: mysql_query(): supplied argument is not a valid MySQL-Link resource in /home/content/02/6945202/html/copoetry/insert.php on line 7
Error:

Что я делаю не так? Спасибо

Ответы [ 4 ]

2 голосов
/ 27 июля 2011

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

EG:

$con = mysql_connect('host', 'user', 'pass') or die(mysql_error());

Как только вы это сделаете, все ваши mysql_* вызовы будут использовать это соединение, так что вы в любом случае можете избавиться от переменной $ con.

ТАКЖЕ Не забудьтеизбегайте ввода, чтобы быть в безопасности, вставка переменной $_POST, $_GET или $_REQUEST прямо в mysql очень небезопасна.Сделайте по крайней мере, вы запускаете mysql_real_escape_string(); на каждый ввод, полученный из формы или файла cookie .

EG

// Create a shortcut function somewhere early in your script
function mes($input) { 
    return mysql_real_escape_string($input);
}

// SQL Example
$sql = "INSERT INTO Poems (Title, Privacy) VALUES ('".mes($_POST['title'])."','".mes($_POST['privacy'])."')";

Обратите внимание на конкатенацию строк (с использованием полной остановки) для разделения строк / переменных.

1 голос
/ 27 июля 2011

Тебе не хватает mysql_connect().Попробуйте добавить это.Кроме того, очень небезопасно запускать запрос с использованием всего, что приходит от $_GET/$_POST/$_REQUEST.

0 голосов
/ 27 июля 2011

Я думаю, вы забыли указать команду mysql_connect ().

0 голосов
/ 27 июля 2011

Нет связи с вашей БД; -)

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