Ошибка синтаксиса PHP - PullRequest
       11

Ошибка синтаксиса PHP

0 голосов
/ 11 января 2012

Я пытался получить правильный синтаксис следующего запроса, но он продолжает генерировать синтаксическую ошибку

Пример кода

$_SESSION['FN'] = "FirstName";
$_SESSION['LN'] = "LastName";
$_SESSION['Code'] = 1;
$strSql = "INSERT INTO BookingInformation (FirstName,LastName,Code) VALUES("'.$_SESSION['FN'].'","'.$_SESSION['LN'].'",'.$_SESSION['Code'].')";

Я хочу сохранить строковое и целочисленное значение, но оператор вставки генерирует синтаксис

Ответы [ 5 ]

3 голосов
/ 11 января 2012

Вы цитируете неправильно, например

VALUES("'

Должно быть

VALUES('"
0 голосов
/ 11 января 2012

Неверное предложение, правильная форма:

 /* i don't need this!!!
    $_SESSION['FN'] = "FirstName";
    $_SESSION['LN'] = "LastName";
    $_SESSION['Code'] = 1;
*/
    $strSql = "INSERT INTO BookingInformation (FirstName) VALUES("'.$_SESSION['FN'].'")";

o если поля таблицы BookingInformation, например, FirstName, LastName и Code, можно вставить:

$strSql = "INSERT INTO BookingInformation (FirstName,LastName,Code) VALUES("'.$_SESSION['FN'].'","'.$_SESSION['LN'].'",'.$_SESSION['Code'].')";

если у вас есть значения null, вы можете сделать:

$strSql = "INSERT INTO BookingInformation   VALUES("'.$_SESSION['FN'].'",'','')";
0 голосов
/ 11 января 2012

попробуй

$strSql = "INSERT INTO BookingInformation (FirstName, LastName, Code) VALUES('".$_SESSION['FN']."', '".$_SESSION['LN']."', '".$_SESSION['Code']."')";

0 голосов
/ 11 января 2012

Проблема в том, что '' внутри "" попробуйте следующим образом:

$strSql = "INSERT INTO BookingInformation (FirstName) VALUES ('".$_SESSION['FN']."', '".$_SESSION['LN']."', '".$_SESSION['Code']."')";

Вы также пытаетесь вставить 3 значения в одну строку, что не может быть сделано, как указано выше, это должно быть (псевдокод):

INSERT INTO table (column1, column2, column3) VALUES ($data1, $data2, $data3);

Или в вашем случае:

$strSql = "INSERT INTO BookingInformation (FirstName, LastName, Code) VALUES ('".$_SESSION['FN']."', '".$_SESSION['LN']."', '".$_SESSION['Code']."')";

Наконец, ваш код выглядит небезопасным, так как сеанс может быть подделан, лучше защитить все входные данные подготовленными запросами или mysql_real_escape_string()

0 голосов
/ 11 января 2012

Попробуйте так:

$strSql = "INSERT INTO BookingInformation (FirstName, LastName, Code) VALUES('" . $_SESSION['FN'] . "', '" . $_SESSION['LN']. "','" . $_SESSION['Code'] . "')";

Также ваш код уязвим для SQL-инъекция .

...