2014-10-07 5 views
0

Этот вопрос немного базовый и был покрыт много раз, но я не уверен, почему мой код ничего не делает. он вообще не обновляет строку.заменить строку в php?

это мой код:

$fineImage = "users_fav/".$_GET['id']."/$newname"; 


$icon = "<img src='images/icon.png' height='70' width='70' />"; 

$sql = "UPDATE $lchat SET user_message = replace(user_message, '$icon', '$fineImage')"; 
$query = mysqli_query($db_conx, $sql); 

проблема заключается в том, что если я изменю '$icon', '$fineImage' к чему-то вроде 'david', 'mark'. он отлично работает, и он заменит Дэвида меткой ...!

так почему же он не работает так, как я это делаю?

+4

При использовании 'mysqli' вы должны использовать параметризованные запросы и [' bind_param'] (http://php.net/manual/en/mysqli-stmt.bind-param.php), чтобы добавить данные пользователя в Ваш запрос. ** НЕ используйте ** интерполирование строк, чтобы выполнить это, потому что вы создадите серьезные [SQL-инъекции ошибок] (http://bobby-tables.com/). Вероятно, у вас есть какая-то проблема с кавычками из-за использования конкатенации строк. – tadman

+0

@tadman, позаботьтесь, чтобы объяснить дальше, пожалуйста? – user3806613

+0

@tadman, я думал, что сам .. +1 для указания taht out .. – user3806613

ответ

2

Вполне вероятно, что ваш призыв к MySQL, REPLACE(input, before, after) не удается найти before в input, поэтому возвращается input неизмененной.

Почему это может быть? Несколько причин:

  1. user_message не содержит то, что, по вашему мнению, содержит. Например, используются ли теги < и > (то есть закодированы с помощью &lt; и т.п.)?
  2. вы заменяете полный тег <img..> своим $ fine_image. Есть $fineimage также тег <img ...>?
  3. ваш параметр before содержит встроенные символы одиночной кавычки. Это может сговориться, чтобы сделать вашу строку SQL недействительной.
0

Попробуйте это: -

$sql = "UPDATE {$lchat} SET `user_message` = replace(`user_message`, '{$icon}', '{$fineImage}')"; 

Убедитесь, что вы имеете $ ЛХАТА, $ значок, $ fineImage определены. :)

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