Ошибка синтаксиса SQL, проблемы с подключением простой формы PHP - PullRequest
2 голосов
/ 20 февраля 2012

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

Вот моя форма:

<form id="form1" name="form1" method="post" action="mailform.php" onsubmit="return validateForm();">

    <input type="text" id="First" maxlength="100" autocorrect placeholder="First name" />
    <input type="text" id="Last" maxlength="100" autocorrect placeholder="Last name" />
    <input type="text" id="Email" maxlength="100" autocorrect placeholder="Email address" />
    <select name="SalesPerson">
        <option value="SP1">SP1</option>
        <option value="SP2">SP2</option>
        <option value="SP3">SP3</option>
        </select>
    <select name="Show">
        <option value="Show1">Show1</option>
        <option value="Show2">Show2</option>
        </select>

        <button type="submit" id="submit" class="oneup">Submit</button>

</form>

и более на mailform.php у нас есть:

<?php

    $name = "xxx_xxx";
    $name = mysql_real_escape_string($name);
    $SQL = "SELECT * FROM users WHERE username = '$name'";

$con = mysql_connect("localhost","xxx_xxx","xxxxxxxxx");
if (!$con)
  {
  die('Could not connect: ' . mysql_error());
  }

mysql_select_db("xxx_x", $con);

$sql="INSERT INTO email_signup (First, Last, Email, SalesPerson, Show)
VALUES
('$_POST[First]','$_POST[Last]','$_POST[Email]','$_POST[SalesPerson]','$_POST[Show]')";

if (!mysql_query($sql,$con))
  {
  die('Error: ' . mysql_error());
  }

mysql_close($con)
?>

А вот и ошибки -

Warning: mysql_real_escape_string() [<a href='function.mysql-real-escape-string'>function.mysql-real-escape-string</a>]: Access denied for user 'xxx'@'localhost' (using password: NO) in <b>.../mailform.php</b> on line 28

Warning: mysql_real_escape_string() [<a href='function.mysql-real-escape-string'>function.mysql-real-escape-string</a>]: A link to the server could not be established in <b>.../mailform.php</b> on line 28 Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'Show) VALUES ('','','','SP1','Show1')' at line 1

Есть идеи, почему у меня проблемы с подключением? У меня есть почти идентичная форма, настроенная в другом месте, которая прекрасно работает.

Ответы [ 3 ]

2 голосов
/ 20 февраля 2012

Сначала установите соединение, затем запустите mysql_real_escape_string (), а затем запрос.mysql_real_escape_string () на самом деле соединяется с БД, чтобы позволить ей экранировать вашу строку.Если у вас нет подключения, оно не будет работать

1 голос
/ 20 февраля 2012

Попробуйте сначала установить соединение.

$con = mysql_connect("localhost","xxx_xxx","xxxxxxxxx");
if (!$con)
  {
  die('Could not connect: ' . mysql_error());
  }


 $name = "xxx_xxx";
    $name = mysql_real_escape_string($name);
    $SQL = "SELECT * FROM users WHERE username = '$name'";
0 голосов
/ 20 февраля 2012

Примечание. Этот ответ не пытается устранить серьезную уязвимость внедрения SQL. Для более глубокого обсуждения прочитайте комментарии под вопросом.

Показать - зарезервированное слово

Используйте

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