Эта ошибка часто возникает из-за того, что вы забыли правильно удалить данные, переданные в MySQL-запрос .
Пример того, что не делать («Плохая идея»):
$query = "UPDATE `posts` SET my_text='{$_POST['text']}' WHERE id={$_GET['id']}";
mysqli_query($db, $query);
Этот код может быть включен в страницу с формой для отправки с URL-адресом например http://example.com/edit.php?id=10 (для редактирования сообщения n ° 10)
Что произойдет, если представленный текст содержит одинарные кавычки ? $query
закончится:
$query = "UPDATE `posts` SET my_text='I'm a PHP newbie' WHERE id=10';
И когда этот запрос будет отправлен в MySQL, он будет жаловаться, что синтаксис неверен, потому что в середине есть отдельная одинарная кавычка.
Чтобы избежать таких ошибок, вы ДОЛЖНЫ всегда избегать данных перед использованием в запросе.
Экранирование данных перед использованием в SQL-запросе также очень важно, потому что если вы этого не сделаете, ваш скрипт будет быть открытым для инъекций SQL. SQL-инъекция может привести к изменению, потере или изменению записи, таблицы или всей базы данных. Это серьезная проблема безопасности!
Документация:
echo "obase=16; 34" | bc
, Если Вы хотите отфильтровать целый файл целых чисел, один на строку:
( echo "obase=16" ; cat file_of_integers ) | bc
Попробованный printf(1)
?
printf "%x\n" 34
22
существуют, вероятно, способы сделать это со встроенными функциями во всех оболочках, но это было бы менее портативно. Я не проверил POSIX sh спецификации, чтобы видеть, имеет ли он такие возможности.
В zsh
можно сделать этот вид вещи:
% typeset -i 16 y
% print $(( [#8] x = 32, y = 32 ))
8#40
% print $x $y
8#40 16#20
% setopt c_bases
% print $y
0x20
Пример, взятый от zsh
страница документов об Арифметической Оценке .
я полагаю, что Bash имеет подобные возможности.
Шестнадцатеричное в десятичное:
$ echo $((0xfee10000))
4276158464
Десятичное в шестнадцатеричное:
$ printf '%x\n' 26
1a
Простите меня, попробуйте это ...
#!/bin/bash
:
declare -r HEX_DIGITS="0123456789ABCDEF"
dec_value=$1
hex_value=""
until [ $dec_value == 0 ]; do
rem_value=$((dec_value % 16))
dec_value=$((dec_value / 16))
hex_digit=${HEX_DIGITS:$rem_value:1}
hex_value="${hex_digit}${hex_value}"
done
echo -e "${hex_value}"
Пример:
$ ./dtoh 1024
400