Почему я получаю ошибку MySQL "Запрос был пуст"? - PullRequest
7 голосов
/ 11 марта 2009
$id = $_REQUEST['id'];
$Section = $_REQUEST['section'];
$Subject = $_REQUEST['subject'];
$type = $_REQUEST['type'];
$Start_date1 = isset($_REQUEST['startTxt'])?($_REQUEST['startTxt']):"";
$Venue = isset($_REQUEST['venTxt'])?($_REQUEST['venTxt']):"";
$Facilitator = isset($_REQUEST['faciTxt'])?($_REQUEST['faciTxt']):"";
$Level = isset($_REQUEST['lvlLst'])?($_REQUEST['lvlLst']):"";
$Date1 = $_REQUEST['date1'];

if(isset($_REQUEST['EDIT']))
{
    mysql_query("UPDATE service SET Start_date='$Date1', Venue='$Venue', Facilitator='$Faci' WHERE ServiceID ='$id'");
    if (!mysql_query($sql,$con))
    {
        die('Error: ' . mysql_error());
    }

    echo '<script type="text/javascript">';
    echo 'alert("Changes have been save!");';
    echo 'window.location="Admin_RecSchedMapLst.php";';
    echo '</script>';
    mysql_close($con);
}           

Когда я нажимаю «Сохранить», возвращается «Ошибка: запрос был пуст» - почему это так?

Ответы [ 3 ]

16 голосов
/ 11 марта 2009

Вы звоните mysql_query() дважды, один раз с несуществующим параметром $sql:

mysql_query("UPDATE service SET Start_date='$Date1', Venue='$Venue', Facilitator='$Faci' WHERE ServiceID ='$id'");
if (!mysql_query($sql,$con))

должно быть:

if (!mysql_query("UPDATE service SET Start_date='$Date1', Venue='$Venue', Facilitator='$Faci' WHERE ServiceID ='$id'"))

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

Например:

$Date1 = mysql_real_escape_string($Date1, $conn);
4 голосов
/ 15 октября 2009

Пожалуйста, ради любви к Интернету, не создавайте SQL-запрос самостоятельно. Используйте PDO .

3 голосов
/ 11 марта 2009

Вы не устанавливаете переменную $ sql и не вызываете mysql_query () дважды.

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