PHP добавляет тарабарщину к строкам, переданным в mysql_query - PullRequest
1 голос
/ 09 июля 2011

в PHP, я использую mysql_query($querystring) для вставки некоторой информации в таблицу.

Однако, когда я просматриваю журналы запросов MySQL, это показывает, что добавляется тарабарщина:

MySQL Log:

INSERT INTO database.table 
SET
`col1` = '0^@0^@:^@0^@0^@:^@1^@8',
`col2` = '3^@8^@0',
`col3` = '3^@6^@8',
`col4` = '1^@2'

Когда я выполняю var_dump () для $ querystring, все выглядит нормально, ^ @ не добавляется.

PHP var_dump () - Примечание. Я только что набрал номер 333.

string(333) "INSERT INTO database.table 
SET
`col1` = '00:00:18',
`col2` = '380',
`col3` = '368',
`col4` = '12'"

Однако в журналах MySQL отображается ^ @.Есть ли способ убрать ^ @ из строки $ query?

Значения, хранящиеся в базе данных: «00: 00: 00» (значение по умолчанию для этого поля), «3», «3»и «1».Col1 относится к типу date, а Col2-4 - smallint (5).

Ответы [ 4 ]

2 голосов
/ 09 июля 2011

Что именно происходит с таблицей?Может быть, вы просто забыли "," после col1 = '00: 00: 18 '?

1 голос
/ 09 июля 2011

Убедитесь, что тип вашего поля VARCHAR или, по крайней мере, INT для чисел.MySQL может испортить ваши строки, чтобы они соответствовали неподходящему типу.

0 голосов
/ 04 октября 2011

Закончилась проблема кодирования.

Исправлено:

$string_input_to_mysql_query = iconv("UCS-2", "ISO-8859-1", $string_input_to_mysql_query);
0 голосов
/ 19 июля 2011

Вот исправление, которое я использовал в итоге:

/* 
        Strip hidden gibberish characters inherited from the original .csv file
        NOTE: Do a var_dump() to check for hidden gibberish characters, compare the string length from the var_dump() to an eye count of the character length that shows on the screen. Also, check MySQL Query Log to see what characters are being added during INSERT
*/

    for($j=0; $j<strlen( $Parts[$i]);$j++)
    {
        if(is_numeric($Parts[$i][$j]) or $Parts[$i][$j]==':' or $Parts[$i][$j]=='.')
        $stringholder.=$Parts[$i][$j];
    }
    $Parts[$i] = $stringholder;
    $stringholder ="";

Не самое чистое, но выполняет свою работу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...