Я хочу вставить 0 в некоторые поля таблицы db, но не могу заставить его работать. Кусок кода из моего php-скрипта регистрации выглядит так.
…
if (isset($type)) { if($type==1) { $region=$data['region']; $school=$data['school']; $class=$data['class']; $group='NULL'; $subject='NULL'; $university='NULL'; $profession='NULL'; } if($type==2) { $group=$data['group']; $region=$data['region']; $school=$data['school']; $class=$data['class']; $subject='NULL'; $university='NULL'; $profession='NULL'; } if($type==3) { $group='NULL'; $region='NULL'; $school='NULL'; $class='NULL'; $subject='NULL'; $university=$data['university']; $profession=$data['profession']; } if($type==4) { $group='NULL'; $region='NULL'; $school='NULL'; $class='NULL'; $university='NULL'; $profession='NULL'; $subject=$data['subject']; } } $sql= "INSERT INTO users (level,fname, mname, lname, dob, age, reg_date, phone, email, login, pwd, type, group, region, school, class, ip, subject, ban, university, profession) VALUES ('1','$data[fname]', '$data[mname]', '$data[lname]', '$dob', '$age, now(), '$data[phone]', '$email', '$login', '$pwd', '$data[type]', '$data[region]', '$data[school]', '$data[class]', '$ip', '$subject', NULL, '$university', '$profession')"; $result = $db->query($sql) or die(printf("Errorv: %s\n", $db->error)); $id = $db->insert_id(); $md5_id = md5($id); $db->query("update users set md5_id='$md5_id' where id='$id'"); // echo "<h3>Thank You</h3> We received your submission.";
…
Каждый раз, когда появляется это сообщение об ошибке «У вас есть ошибка в синтаксисе SQL, проверьте руководство, соответствующее версии вашего сервера MySQL, для правильного синтаксиса для использования рядом с« группа, регион, школа, класс, ip, тема, запрет, университет, профессия) ЦЕННОСТИ в строке 2 "
Пробовал '0', 0 вместо NULL. Нет успеха. Пожалуйста помоги
Изменен код. Все еще нет успеха
$sql= "INSERT INTO users (level,fname, mname, lname, dob, age, reg_date, phone, email, login, pwd, type, 'group', region, school, class, ip, subject, ban, university, profession) VALUES ('1','$data[fname]', '$data[mname]', '$data[lname]', '$dob', '$age', now(), '$data[phone]', '$email', '$login', '$pwd', '$data[type]', '$data[region]', '$data[school]', '$data[class]', '$ip', '$subject', NULL, '$university', '$profession')";
Учитывая ваше редактирование, вы неверно указали словосочетание. Вы не можете использовать одинарные кавычки, чтобы превратить зарезервированное слово в «приемлемое» слово, оно должно быть обратным:
INSERT ....., `group`, ... VALUES .... ^-----^--- note the backticks
Одиночные кавычки превращают что-то в строку, но вы не можете использовать строку для имени поля.
В будущем, если вы получите синтаксическую ошибку SQL, покажите нам фактический запрос, вызывающий ошибку. Как правило, PHP, который строит запрос, не нужен – мы хотим узнать, о чем жалуется MySQL. Только после того, как мы выясним, какова фактическая проблема, мы можем сказать вам, как изменить код, чтобы исправить эту проблему.
group
является зарезервированным словом . переименуйте свое поле или поместите его в backticks (`)
Группа – это ключевое слово, ее нужно обернуть вокруг котировок. Кроме того, на самом деле это не похоже на то, что вы делаете санитацию, если нет, вам следует.
Вы пропустите цитату после $ age. Также вы должны использовать {$ data ['lname']} вместо $ data [lname] в кавычках.
4 вещи,
group
(или любое имя поля, чтобы быть уверенным) <?php $sql= sprintf("INSERT INTO `users` (`level`,`fname`, `mname`, `lname`, `dob`, `age`, `reg_date`, `phone`, `email`, `login`, `pwd`, `type`, `group`, `region`, `school`, `class`, `ip`, `subject`, `ban`, `university`, `profession`) VALUES ('1','%s','%s','%s','%s','%s',now(),'%s','%s','%s','%s','%s','%s','%s','%s','%s','%s', NULL,'%s','%s')", mysql_real_escape_string($data['fname']), mysql_real_escape_string($data['mname']), mysql_real_escape_string($data['lname']), mysql_real_escape_string($dob), mysql_real_escape_string($age), mysql_real_escape_string($data['phone']), mysql_real_escape_string($email), mysql_real_escape_string($login), mysql_real_escape_string($pwd), mysql_real_escape_string($data['type']), mysql_real_escape_string($data['region']), mysql_real_escape_string($data['school']), mysql_real_escape_string($data['class']), mysql_real_escape_string($ip), mysql_real_escape_string($subject), mysql_real_escape_string($university), mysql_real_escape_string($profession));