Судя по сообщению об ошибке, похоже, что вы вызываете какую-то экранирующую функцию для всего запроса , например addslashes($query)
или mysql_real_escape_string($query)
. Это будет экранировать каждую кавычку в запросе , тогда как на самом деле то, что вы хотите сделать, это экранировать только кавычки, которые находятся внутри ваших переменных.
Если это так, то вместо этого вы хотите сделать что-то вроде этого:
$query = "INSERT INTO tbl_users(user, password, password_def, userid, level,
regdate,lastdate, email) VALUES('".mysql_real_escape_string($username)."',
sha1('".mysql_real_escape_string($password)."'),
sha1('".mysql_real_escape_string($password)."'),
'".mysql_real_escape_string($userid)."', '0',
NOW(), NOW(), '".mysql_real_escape_string($email)."')";
Это будет правильно экранировать ваши данные без ошибочной экранирования остальной части запроса. Как только вы это сделаете, не запускайте $query
как целую строку через другие формы экранирования.