2014-09-08 3 views
0

Я пытаюсь вставить четыре переменные в таблицу mysql. Следующий оператор mysql INSERT создает ошибки T_STRING. Я был бы признателен, если кто-нибудь может сообщить, где моя ошибка в синтаксисе.ошибки вставки переменных в операторе mysql

function add_student($name, $phone, $email, $id) { 
global $modx; 
$session_id = intval($id, 10); 
$query = $modx->db->INSERT INTO `xtra_students`(`name`, `phone`, `email`, `session_id`) VALUES ('$name', '$phone', '$email', '$session_id');  
return $query; 
} 

Первые 3 переменные - varchar, а $ session_id - int (4).

+0

Пожалуйста, сначала прочитайте документацию для [* 'MODx API: DB: query' *] (http://rtfm.modx.com/evolution/1. 0/developers-guide/api-reference/dbapi/query) –

+0

Я не знаком с вашим классом, но на первый взгляд '$ modx-> db-> INSERT INTO' не будет работать, потому что синтаксис неверен. В именах методов не должно быть пробелов, или вам придется обернуть их в curlies, например '$ modx-> db -> {'INSERT INTO'}'. – techouse

+0

Re: Задание этого вопроса на удержание. Я не согласен с предпосылкой, что у пользователей нет возможности учиться на этом примере. Коррекция кода более осведомленными программистами дает хорошие уроки как для меня (ОП), так и для других пользователей, у которых есть подобные проблемы. Я, например, многому научился из этого единственного упражнения. Спасибо тем, кто внес свой вклад в это в этом посте. – Twobears

ответ

2

Вы пропустили вызов функции и кавычки строки:

$query = $modx->db->query("INSERT INTO `xtra_students`(`name`, `phone`, `email`, `session_id`) VALUES ('$name', '$phone', '$email', '$session_id')");  
+0

Спасибо за ваши ответы. да, это работало настолько, что не производило ошибок и успешно переходило на страницу «Спасибо». Но, к сожалению, таблица базы данных не создавала новую строку со вставленными данными. Поэтому я принимаю ваш ответ и думаю, что мне нужно задать новый вопрос. – Twobears

1
$query = $modx->db->INSERT INTO `xtra_students`(`name`, `phone`, `email`, `session_id`) VALUES ('$name', '$phone', '$email', '$session_id');  

Эта линия проблема, вам нужно обернуть MySQL запрос в кавычки, я не знаю, что ваш $modx->db-> но это может выглядеть следующим образом:

$modx->db->query("INSERT INTO `xtra_students`(`name`, `phone`, `email`, `session_id`) VALUES ('$name', '$phone', '$email', '$session_id')"); 
1
$modx->db->query("INSERT INTO `xtra_students`(`name`, `phone`, `email`, `session_id`) VALUES ('$name', '$phone', '$email', '$session_id')"); 
+2

Пожалуйста, объясните, что не так с кодом OP и почему это решает проблему *, отредактировав свой ответ. * –

+0

В заявлении требуются скобки и кавычки вокруг него. Они отсутствовали в моем исходном коде («INSERT INTO .......») – Twobears

Смежные вопросы