PHP, MySQL, кодиране BLOB, за да върви SQL

12 отговора 0 прегледа
#1

PHP, MySQL, кодиране BLOB, за да върви SQL

PHP, MySQL, кодиране BLOB, за да върви SQL.

Като че ли се налага да се кодират двоичните данни, за да могат да се записват в BLOB полета (за да вървят SQL заявките за добавяне/редактиране на данни).
Моля, дайте ми съвет как да го направя!
Благодаря!

Редактирано от NSB на

Отговор
в отговор на NSB #2

Re: PHP, MySQL, кодиране BLOB, за да върви SQL

Като ги кодираш тези двоични данни, не остават ли пак двоични?! Или стават осмични?! Моите данни пък са шеснадесетични.

Отговор
в отговор на vido #3

:) ако имаше желание да помогнеш, щеше да разбереш

:) ако имаше желание да помогнеш, щеше да разбереш.
Но като нямаш желание - да ти поясня:
Пиша си заявка от рода на
"Insert into TableName FieldNames values FieldData"
Изчетох всички функции от групата на ...slashes..., но не разбрах как да си кодирам двоичните данни така, че да минават през синтаксиса на SQL.
Прост пример: в двоичните данни (на BLOB полето), ако има кавичка се отразява на целия SQL.

ПП
И извън контекста, но относно отговора ти: защо мислиш, че всяко кодиране променя множеството на стойностите? Може би бъркаш кодиране с представяне?
Разбира се, благодарен съм ти за отзивчивостта и бързия отговор.

Отговор
в отговор на NSB #4

баси ...

... хаоса имаш в главата ти ....

В отговор на:

"Insert into TableName FieldNames values FieldData"




ето ти най-елементарното

foreach($_POST as $k => $v) $_POST[$k] = is_string($v) ? "'".addslashes($v)."'":$v;

mysql_query("BEGIN; INSERT INTO table (".implode(",", array_keys($_POST)).") VALUES (".implode(",", array_values($_POST)).");COMMIT;");

Отговор
в отговор на Bълk #5

Re: баси ...

Обратното му е stripslashes, нали?
Благодаря ти!
Хубу, че си ми написал mysql_query :), ама с него не съм имал проблем.

PS
Двете точки (:) в "'".addslashes($v)."'":$v; какво правят?
(извини за нахалството :)))

Отговор
в отговор на hubu #6

Re: баси ...

алтернативен синтакс

ако е алабала ? значи е алабала : иначе не е алабала


брей.... колко съм културен днес ....

Отговор
в отговор на NSB #7

Re: PHP, MySQL, кодиране BLOB, за да върви SQL

If you want to insert binary data into a string column (such as a BLOB column), the following characters must be represented by escape sequences:
NUL NUL byte (ASCII 0). Represent this character by ‘\0’ (a backslash followed by an ASCII ‘0’ character).
\ Backslash (ASCII 92). Represent this character by ‘\\’.
' Single quote (ASCII 39). Represent this character by ‘\'’.
" Double quote (ASCII 34). Represent this character by ‘\"’.

When writing application programs, any string that might contain any of these special characters must be properly escaped before the string is used as a data value in an SQL statement that is sent to the MySQL server. You can do this in two ways:

*

Process the string with a function that escapes the special characters. In a C program, you can use the mysql_real_escape_string() C API function to escape characters. See Section 22.2.3.52, “mysql_real_escape_string()”. The Perl DBI interface provides a quote method to convert special characters to the proper escape sequences. See Section 22.4, “MySQL Perl API”. Other language interfaces may provide a similar capability.
*

As an alternative to explicitly escaping special characters, many MySQL APIs provide a placeholder capability that enables you to insert special markers into a statement string, and then bind data values to them when you issue the statement. In this case, the API takes care of escaping special characters in the values for you.


rtfm

Отговор
в отговор на пxп шмaтka #8

Благодаря

Благодаря, значи addslashes и stripslashes решават проблема със заявките.

Отговор
в отговор на NSB #9

Re: Благодаря

a mysql_real_escape_string?

Отговор
в отговор на пxп шмaтka #10

Благодаря, благодаря (и още)

Благодаря, Благодаря :)
Тъкмо влязох пак във форума, защото определено тия CrLf (#10#13) през браузъра ми стъжняват живота.
Това множество \x00, \n, \r, \, ', " and \x1a (от mysql_real_escape_string) включва ли всички възможни гафове?

Редактирано от NSB на

Отговор
в отговор на NSB #11

Re: Благодаря, благодаря (и още)

..'мба ли маа му
доста е категорично името на функцията, така че трябва да ескейпва де що има кофти символ

Отговор
в отговор на NSB #12

Re: PHP, MySQL, кодиране BLOB, за да върви SQL

Тъй като имам подобен проблем, да се намеся и аз.
При мен резултата от изпълнението на двете функции - addslashes и
mysql_real_escape_string е един и същ. Проблема с кавичките се решава, но CrLf (#10#13), \n, \r остават проблемни, поне за мен.
Помогнете, моля.
Предварително благодаря.

Отговор
в отговор на VCG #13

Re: PHP, MySQL, кодиране BLOB, за да върви SQL

баси ... как ги докарвате тия проблеми не знам ..... що бъркате по конфиг файл на места освен за екстеншни и размера на файлове?

Отговор