Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Компьютеры + Интернет » Вебмастеру » [решено] не работает UPDATE-запрос

Ответить
Настройки темы
[решено] не работает UPDATE-запрос

Аватара для Surround

Ветеран


Сообщения: 908
Благодарности: 20

Профиль | Отправить PM | Цитировать


Добры день! Возникла странная ситуация! В скрипте собирается запрос:
PHP код: Выделить весь код

class MysqlDB

{
    
private $mysql_link;
    
public function __construct()
    {
        
$this->mysql_link mysql_connect(MYSQL_SERVERMYSQL_USERMYSQL_PASSWORD) or die('Невозможно подключиться: ' mysql_error());
        
mysql_select_db(MYSQL_DATABASE) or die (mysql_error());
        
mysql_query("SET SQL_MODE='STRICT_TRANS_TABLES'");//включение ограничей во FK
        
mysql_query("SET NAMES cp1251");
    }
    
    
public function Query($sql)
    {    
        
$result mysql_query($sql) or die(sprintf("<b>DB ERROR</b><br>%d: %s<br><b>IN QUERY</b><br>%s",mysql_errno(),mysql_error(),$sql));
        return 
$result;
    }
    
    
    
public function __destruct() 
    {
        
mysql_close($this->mysql_link);
    } 
}

function 
NVC($value)
{
    if (
$value!=''$value "'$value'";
    else 
$value "NULL";
    return 
htmlspecialchars($valueENT_QUOTES);
}

$db = new MysqlDB();

$sql "UPDATE abonents SET 
                    abn_personal_acc = "
.NVC($_POST["PerconalAcc"]).",
                    abn_contract_num = "
.NVC($_POST["ConractNum"]).",
                    abn_login = "
.NVC($_POST["Login"]).",
                    abn_passwd = "
.NVC($_POST["Password"]).",
                    abn_lastname = "
.NVC($_POST["Lastname"]).",
                    abn_name = "
.NVC($_POST["Name"]).",
                    abn_fathername = "
.NVC($_POST["Fathername"]).",
                    abn_passport_sn = "
.NVC($_POST["PassportSn"]).",
                    abn_passport_data = "
.NVC($_POST["PassportData"]).", 
                    abn_born_date = "
.NVC($Birthday).",
                    abn_born_place = "
.NVC($_POST["BornPlace"]).", 
                    abn_contact_phone = "
.NVC($_POST["Phone"]).", 
                    abn_city_id = '"
.$_POST["City"]."', 
                    abn_street_id = '"
.$_POST["Street"]."',
                    abn_building_num = "
.NVC($_POST["BuildingNum"]).",
                    abn_office_num = "
.NVC($_POST["OfficeNum"])."
                WHERE id = '"
.$_POST["AbonentId"]."'";
        
$db->Query($sql); 

и при выполнении объект класса БД экранирует ошибку:
Код: Выделить весь код
DB ERROR
1064: 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 ''2011-06-17', acp_comment = NULL WHERE id = '661' AND ac' at line 10
IN QUERY
UPDATE abn_cnct_points SET acp_port_id = '2262', acp_vlan = NULL, acp_ip = NULL, acp_tarif_id = '1', acp_city_id = '2', acp_street_id = '568', acp_building_num = NULL, acp_office_num = NULL, acp_start_date = '2011-06-17', acp_comment = NULL WHERE id = '661' AND acp_ab_id = '661'
Однако же если этот запрос дополдлинно скопировать и выполнить в phpMyAdmin, например, никаких ошибок нет и все исполняется.
В какую сторону копать, уже с толку сбился, подскажите, пожалуйста!

еще дополнение: если этот самый запрос вставить в переменную $sql в скрипте, все также срабатывает!

Отправлено: 17:30, 29-06-2011

 

Deadooshka


Сообщения: 2512
Благодарности: 690

Профиль | Отправить PM | Цитировать


есть ограничения при разных SQL_MODE на значение полей. rtm.

мб дату в таком виде в поле нельзя совать (в таком значении SQL_MODE), зависит от формата поля в таблице... пробуйте сначала закоментить строку с SQL_MODE (если обновится, то значит ограничения режима).

Отправлено: 18:14, 29-06-2011 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для Surround

Ветеран


Сообщения: 908
Благодарности: 20

Профиль | Отправить PM | Цитировать


не, дату как раз можно, это ж формат SQL, и запрос из PMA работает.
Разобрался в чем проблема - в экранировании кавычек htmlspecialchars. Запрос отправлялся с кавычками в виде html-сущностей, а в браузере выводился он же, но только эти сущности выглядели нормально. Заглянул в исходный код страницы и увидел следующее (нижние подчеркивание вставлено в данном случае, чтобы код не преобразовывался в символ):
Код: Выделить весь код
UPDATE abn_cnct_points SET acp_port_id = &_#39; 2262 &_#39;
Спасибо!

Отправлено: 09:00, 30-06-2011 | #3



Компьютерный форум OSzone.net » Компьютеры + Интернет » Вебмастеру » [решено] не работает UPDATE-запрос

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Запрос правильный но не работает venuko Вебмастеру 2 07-10-2010 14:25
[решено] не работает Windows update+avtorun WinMen Хочу все знать 13 28-01-2010 20:29
[решено] mysql_query. Не работает UPDATE Artem-Samsung Вебмастеру 5 09-01-2009 01:26
Ошибка - [решено] Не работает установка режимов работы Windows Update wa-Nadoo Microsoft Windows 2000/XP 1 29-07-2008 17:43
Не работает  Update. Guest Microsoft Windows 2000/XP 17 16-11-2006 11:01




 
Переход