Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Ковычки для формирования SQL запроса / 3 сообщений из 3, страница 1 из 1
26.06.2015, 13:59
    #38993652
Dozent
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ковычки для формирования SQL запроса
Вот кусочек кода

Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
 foreach ($_POST as $param_name => $param_value) {
      if ($param_name!=='id')
      { 

        switch ($param_name) {
          case 'LOGIN_USER':
          case 'VDESCRIPTION':
          case 'VNAMEE':{
            $field_value ="'".addslashes(str_replace("'", "''", $param_value))."'"; 
          }
          break;
          case 'VPASSWORD':{
            $field_value = addslashes(str_replace("'", "''", $param_value)); 
            $field_value= "'".hash_password($field_value)."'";
          }
          break;
          case 'RROLE':{
            $field_value = intval($param_value); 
          }
          break;
         
          default:
          continue 2;//выходим из свича и другая итерация цикла
        }


        $arr_fields[] = addslashes(str_replace("'", "''", $param_name));
        $arr_values[] = $field_value;
      }
    }

    $arr_fields= implode(' , ', $arr_fields);
    $arr_values= implode(' , ', $arr_values);
    $query = "INSERT INTO users ($arr_fields) VALUES ($arr_values)";
   echo $query;
   /* $link=db_connect();
    $result = ibase_query($query);
     //  ibase_commit();
    ibase_close($link);*/
  }



запрос получается вот такой

Код: plsql
1.
INSERT INTO users (LOGIN_USER , VNAMEE , VPASSWORD , RROLE , VDESCRIPTION) VALUES (''adsf'' , ''adsf'' , ''392b7bc90b108cd187ab9f25021b5961'' , 1 , ''Преподаватель'')



Почему вот так вот получается?
(''adsf'' , ''adsf'' ,
...
Рейтинг: 0 / 0
26.06.2015, 14:08
    #38993664
bazile
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ковычки для формирования SQL запроса
Dozent, потому что ты добавляешь кавычки вокруг значения сначала здесь:
Код: php
1.
2.
3.
$field_value ="'".addslashes(str_replace("'", "''", $param_value))."'"; 
...
$field_value= "'".hash_password($field_value)."'";


и далее здесь:
Код: php
1.
$arr_values= implode(' , ', $arr_values);
...
Рейтинг: 0 / 0
26.06.2015, 14:12
    #38993674
Dozent
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ковычки для формирования SQL запроса
Если делать так:
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
 $arr_fields = array();
    $arr_values = array();
    foreach ($_POST as $param_name => $param_value) {
      if ($param_name!=='id')
      { 

        switch ($param_name) {
          case 'LOGIN_USER':
          case 'VDESCRIPTION':
          case 'VNAMEE':{
            $field_value =addslashes(str_replace("'", "''", $param_value)); 
          }
          break;
          case 'VPASSWORD':{
            $field_value = addslashes(str_replace("'", "''", $param_value)); 
            $field_value= hash_password($field_value);
          }
          break;
          case 'RROLE':{
            $field_value = intval($param_value); 
          }
          break;
         
          default:
          continue 2;//выходим из свича и другая итерация цикла
        }


        $arr_fields[] = addslashes(str_replace("'", "''", $param_name));
        $arr_values[] = $field_value;
      }
    }

    $arr_fields= implode(' , ', $arr_fields);
    $arr_values= implode(' , ', $arr_values);
    $query = "INSERT INTO users ($arr_fields) VALUES ($arr_values)";
   echo $query;



то запрос получается такой

Код: plsql
1.
INSERT INTO users (LOGIN_USER , VNAMEE , VPASSWORD , RROLE , VDESCRIPTION) VALUES (qwe , йцу , 8250cd2031be77af4ced7637529e6e73 , 1 , Преподаватель)
...
Рейтинг: 0 / 0
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Ковычки для формирования SQL запроса / 3 сообщений из 3, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]