SQL цитирует производит синтаксическую ошибку sql на одном сервере, а не на другом

Странно, я переместил сайт и базу данных с одного сервера LAMP на другой. На старом сервере пользователи могут без проблем вводить текст в текстовые области, в которых есть кавычки. Я предполагаю, что это либо в конфигурационных файлах php или sql, проблема в том, что мой хост на старом сайте не будет предоставлять эти файлы, поэтому я не уверен, что изменить. Есть идеи, почему это работает на одном, а не на другом?

Вот строка кода на всякий случай:

mysql_query("UPDATE Stu SET Stu_IDD = '$snumd', First = '$first', Last = '$last',
MPhone = '$mphone', HPhone = '$hphone',  EContact = '$econtact',
EPhone = '$ephone', GMail = '$gmail', PMail = '$pmail',
Address = '$address', Apt = '$apt', Pcode = '$pcode',
City = '$city', DOB = '$dob', Gender = '$gender',
Deaf = '$deaf', Notes = '$notes'
WHERE Stu_ID = '$snum'")
or die(mysql_error());

Большое спасибо заранее за ваше время и ответы!

1

Решение

На старом сервере пользователи могут вводить текст в текстовые области, которые включают
цитаты без проблем.

Похоже, что ваши кавычки автоматически сбрасывались на старом сервере, возможно, из-за настройки в старых версиях php Магические цитаты.

Эта «особенность» устарела и удалена, и на нее не следует полагаться в любом случае для экранирования данных для базы данных.

Вы должны переключиться на PDO или mysqli и использовать подготовленные операторы со связанными параметрами.

1

Другие решения

В любом случае вы, возможно, захотите не включать неэкранированные кавычки в вашу базу данных по соображениям безопасности. использование mysqli_real_escape_string чтобы избежать этих персонажей: \x00, \n, \r, \, ', ", \x1a

http://php.net/manual/en/mysqli.real-escape-string.php

0

В новых версиях mysql команды запроса используют mysqli вместо mysql … Попробуйте вместо этого выполнить mysqli_query. Если это не работает, убедитесь, что имена базы данных и имена в запросе совпадают.

-1
По вопросам рекламы [email protected]