2015-01-30 1 views
1
$array =array(); 
array_push($array,"string"); 
$string = json_encode($array); 

mysql_query('UPDATE table SET strings="'.$string.'" WHERE username="'.$username.'"'); 

Строка не отображается в таблице mysql. Когда я использую «INT» Numbers, когда я определяю строку, такую ​​как $ string = «string», она работает. Так или иначе, это связано с функцией json_encode().Как поместить строку в результате json_encode() в таблицу mysql?

Может ли кто-нибудь помочь мне в этом. Что происходит с моей строкой внутри json_encode(), почему строка не подходит для таблицы mysql?

+1

Вещи не экранированы должным образом, потому что вы используете старый 'mysql_query' взгляд в' PDO' и подготовленные операторы с 'mysqli' – cmorrissey

+0

Ваш код работает для меня. Результат для меня ["string"] Можете ли вы опубликовать анализируемый query_string? –

+0

Инвертировать кавычки, одинарные кавычки снаружи, двойные внутри – Mihai

ответ

1

Использование MySQLi или PDO (MySQLi показано, как это, скорее всего, проще реализовать для существующего приложения)

Возможности, JSON кодирования является добавление символов, которые нарушают синтаксис SQL. Вам нужно бежать строку, вставить:

mysqli_query("UPDATE table SET 
    strings='".mysqli::real_escape_string($string)."' 
    WHERE username='".mysqli::real_escape_string($username)."'"); 

Вы должны всегда бежать строки, или приведение к (int), (float) и т.д., чтобы избежать проблем синтаксиса и инъекции SQL. Или используйте подготовленные заявления. Оба mysqli и PDO поддерживают подготовленные операторы.

Для начала разработки приложений SQL я обычно рекомендую использовать строковое построение, как у вас здесь, так как людям легче понять. Однако, как только у вас есть опыт под вашим поясом и хорошая ручка SQL, я рекомендую переходить к подготовленным заявлениям.

Существует множество статей, подробно описывающих, как использовать подготовленные заявления и опасности внедрения SQL.

Смежные вопросы