За последние 24 часа нас посетили 17636 программистов и 1655 роботов. Сейчас ищут 937 программистов ...

Использование спецсимволов в UPDATE

Тема в разделе "PHP и базы данных", создана пользователем linkoln89, 10 дек 2010.

  1. linkoln89

    linkoln89 Активный пользователь

    С нами с:
    10 дек 2010
    Сообщения:
    5
    Симпатии:
    0
    Собственно, код
    PHP:
    1.        
    2.         //__________________________________
    3.         $id = $_POST['id'];
    4.         $fio = $_POST['fio'];
    5.         $adres = $_POST['adres'];
    6.         $pom = $_POST['pom'];
    7.         $s = $_POST['s'];
    8.         $data_dog = $_POST['data_dog'];
    9.         $stady = $_POST['stady'];
    10.         $prolonga = $_POST['prolonga'];
    11.         $data = $_POST['data'];
    12.         $data_over = $_POST['data_over'];
    13.         $hows = $_POST['hows'];
    14.         $etazh = $_POST['etazh'];
    15.         $otn = $_POST['otn'];
    16.         $svid = $_POST['svid'];
    17.         //______________________________
    18.         $dt = array (
    19.             'id' => $id,
    20.             'fio' => $fio,
    21.             'adres' => $adres,
    22.             'pom' => $pom,
    23.             's' => $s,
    24.             'data_dog' => $data_dog,
    25.             'stady' => $stady,
    26.             'prolonga' => $prolonga,
    27.             'data' => $data,
    28.             'hows' => $hows,
    29.             'etazh' => $etazh,
    30.             'otn' => $otn,
    31.             'svid' => $svid,    
    32.         );
    33.         //______________________________________
    34.         $this->db->query ('SET NAMES cp1251');
    35.         $this->db->where('id', $id);
    36.         $this->db->update('du_dogovor_n', $dt);
    37.         //_______________________________________
    38.  
    Проблема в том, что некоторые переменные содержат строку с кавычками. Как написать запрос с кавычками, используя массив? Заранее спасибо.
     
  2. runner

    runner Активный пользователь

    С нами с:
    16 апр 2010
    Сообщения:
    343
    Симпатии:
    1
    Адрес:
    Ташкент
    все зависит от того включены ли magic_quotes_gpc и самой функции $this->db->update('du_dogovor_n', $dt);

    Конечная цель такая - строки, содержащие спецсимволы должны быть экранированы. К спецсимволам относятся и кавычки

    У тебя 4 варианта
    1) magic_quotes_gpc отключен и функция экранирует спецсимволы- ничего делать не нужно
    2)magic_quotes_gpc отключен и функция не экранирует спецсимволы- нужно использовать mysql_real_escape_string
    3) magic_quotes_gpc включен и функция экранирует спецсимволы- нужно использовать stripslashes
    4)magic_quotes_gpc включен и функция не экранирует спецсимволы- ничего делать не нужно

    Таким образом в случае 2:
    $fio =mysql_real_escape_string( $_POST['fio']);
    в случае 3
    $fio =stripslashes( $_POST['fio']);

    Состояние magic_quotes_gpc определяется функцией get_magic_quotes_gpc()
    Что происходит в $this->db->update() тебе лучше знать