Не работает mysql_query в php (кавычки проб) - PullRequest
1 голос
/ 02 октября 2010
$ikona = "layout/achiv/a_icon.png";
//$opis = string of text without quotation marks

$addit = '<img src="'.$ikona.'" onclick="alert(/'On day '.date("Y-m-d H:i:s").' user has '.htmlspecialchars($opis).'/'); ">';

mysql_query("UPDATE `accounts` SET `this_damn_cell`='".$addit."'
WHERE id='".$_POST["id"]."' ") or die(mysql_error()); //error is not showing up

echo $addit; //shows correctly

Кажется, все работает нормально, но в базе sql ничего не добавляется. Все поля существуют. Тип this_damn_cell - TEXT За любую помощь заранее спасибо:)

1 Ответ

2 голосов
/ 02 октября 2010

Ваш код читает MySQL Injection все время.

Для быстрого исправления с mysql_escape_string, пожалуйста, измените ваш код следующим образом:

$sql = sprintf('UPDATE accounts 
                SET this_damn_cell = %s
                WHERE id='%i", mysql_escape_string($addit), mysql_escape_string($_POST['id']);

mysql_query($sql) or die(mysql_error()); //error is not showing up

Нопрочитайте немного на подготовленных заявлениях.Использование PDO или MySQLi.

Взято с сайта PHP Это простой пример использования MySQL с привязкой (что предотвращает внедрение MySQL и ошибки, с которыми вы сталкиваетесь).

$stmt = $mysqli->prepare("INSERT INTO CountryLanguage VALUES (?, ?, ?, ?)");
$stmt->bind_param('sssd', $code, $language, $official, $percent);
...