@Quty

Почему не удается выполнить вставку посредством mysqli::query?

Имеется: Apache 2.4.6, PHP 5.5.4, MySQL 5.1.71. Все это запущено на Windows 7 x64.

Пытаюсь добавить запись в БД таким образом:
function register_subscriber(mysqli $db_link, array $register_data) {
		
		$data['name'] = $register_data['name'];
		$data['city'] = $register_data['city'];
		$data['email'] = $register_data['email'];
		$data['categorie'] = $register_data['categorie'];
		$data['institution'] = $register_data['institution'];
		$data['languages'] = $register_data['languages'] ? implode('', $register_data['languages']) : NULL;
		$data['themes'] = $register_data['themes'] ? implode('', $register_data['themes']) : NULL;
		$data['event'] = $register_data['event'] ? implode('', $register_data['event']) : NULL;
		$data['learned_from'] = $register_data['learned_from'];
		$data['offers'] = $register_data['offers'];
		
		var_dump($data);
		echo "<br><br>";
		
		foreach($data as $key => $value) {
			if($value) {
				$fields[] = $key;
				if(is_string($value)) $values[] = "'".$value."'";
				else $values[] = $value;
			}
		}
		
		$fields = implode(', ', $fields);
		$values = implode(', ', $values);
		
		var_dump($fields);
		echo "<br><br>";
		var_dump($values);
		echo "<br><br>";
		
		$query = "INSERN INTO subscriber ($fields) VALUES ($values)";
		var_dump($query);
		echo "<br><br>";
		
		if(!$db_link->query($query)) {
			echo "Ошибка добавления подписчика: ".$db_link->error;
		}
	}


На что получаю следующий вывод:
array(10) { ["name"]=> string(12) "Степан" ["city"]=> string(12) "Москва" ["email"]=> string(15) "stephan@lol.com" ["categorie"]=> string(12) "Степан" ["institution"]=> string(6) "ОГУ" ["languages"]=> string(1) "1" ["themes"]=> string(2) "12" ["event"]=> NULL ["learned_from"]=> string(35) "Из рекламы в прессе" ["offers"]=> int(1) } 

string(82) "name, city, email, categorie, institution, languages, themes, learned_from, offers" 

string(128) "'Степан', 'Москва', 'stephan@lol.com', 'Степан', 'ОГУ', '1', '12', 'Из рекламы в прессе', 1" 

string(245) "INSERN INTO subscriber (name, city, email, categorie, institution, languages, themes, learned_from, offers) VALUES ('Степан', 'Москва', 'stephan@lol.com', 'Степан', 'ОГУ', '1', '12', 'Из рекламы в прессе', 1)" 



Ошибка добавления подписчика: 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 'INSERT INTO subscriber (name, city, email, categorie, institution, languages, th' at line 1


Т.е. в тексте ошибки выводится только часть строки запроса. В чем может быть дело?
  • Вопрос задан
  • 2831 просмотр
Решения вопроса 2
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
$query = "INSERT...

string(245) "INSERN...

Какая из двух строк с ошибкой?
Сообщение об ошибке MySQL содержит фрагмент строки запроса, начинающийся с места, где была обнаружена ошибка.
Ответ написан
Комментировать
nowm
@nowm
Дамп запроса выводит «INSERN INTO...». INSERN — это не правильное слово. Правильное слово заканчивается на «T», а не на «N» — «INSERT»
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы