2016-12-22 6 views
1

я могу обновить свою базу данных, используя следующий код:Невозможно обновить базу данных MySQL с текстом

$id = 1; 
$client = 3456; 
$sql = "UPDATE production SET client=$client WHERE id=$id"; 

Однако, если переменная $client это текстовая строка (вместо числового), он не будет работать.

$id = 1; 
$client = "some text"; 
$sql = "UPDATE production SET client=$client WHERE id=$id"; 

Клиентское поле в моей базе данных VARCHAR с лимитом в 50 символов. Есть ли что-то очевидное, что я пропускаю?

ответ

6

Добавить одиночные или двойные кавычки в начале и в конце строки для создания строки в запросе mysql.

Заменить

$sql = "UPDATE production SET client=$client WHERE id=$id"; 

С

$sql = "UPDATE production SET client='$client' WHERE id=$id"; 

выше, может сломаться, если есть апостроф в строке, так что вы можете использовать addslashes значению.

Попробуйте

$sql = "UPDATE production SET client='".addslashes($client)."' WHERE id=$id"; 

Примечание:

Есть SQL возможности инъекции в приведенном выше запросе. Пожалуйста, попробуйте использовать prepare query, чтобы предотвратить инъекции SQL

+0

Я знал, что это будет что-то очевидно, что новый набор глаз увидит сразу. Спасибо! – user1267980

+0

$ sql = "UPDATE production SET client = '$ client' WHERE id = $ id"; с $ sql = "UPDATE production SET client = '$ client' WHERE id = '$ id'"; – Gulshan

+0

Если $ client может содержать некоторый символ '' ', вы можете использовать:' $ sql = 'UPDATE production SET client ='. addslashes ($ client). ' WHERE id = $ id '; ' –

0

добавить одиночные кавычки в запросе в то время как вы передаете строку, как это,

$sql = "UPDATE production SET client='$client' WHERE id=$id"; 
Смежные вопросы