|
|
|
| Люди подскажите как правильно экранировать одинарные кавычки при SQL запросе?
пишу так
$add=mysql_query('INSERT INTO marks (short,count,added,article) VALUES ($_POST[link],0,$_POST[date],$_POST[articles])');
|
mysql_erroe выводит
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '[link],0,$_POST[date],$_POST[articles])' at line 1
|
экранировал так
$add=mysql_query('INSERT INTO marks (short,count,added,article) VALUES (\'$_POST[link]\',\'0\',\'$_POST[date]\',\'$_POST[articles]\')');
|
но в таблицу лезут не значения полей POST а сами поля..например появляеться запись $_POST[date] что не есть хорошо) | |
|
|
|
|
|
|
|
для: Alph[p]a
(21.08.2007 в 22:36)
| | Для того, чтобы PHP-переменные интерполировались в строке, необходимо использовать двойные кавычки, в одинарных кавычках интерполяции не происходит.
<?php
$query = "INSERT INTO marks (short,count,added,article)
VALUES ($_POST[link],0,$_POST[date],$_POST[articles])";
$add=mysql_query($query);
?>
|
| |
|
|
|
|
|
|
|
для: cheops
(21.08.2007 в 22:55)
| | Спасибо....а жаль что не происходит...я все таки думал это я недоглядел. | |
|
|
|
|
|
|
|
для: Alph[p]a
(21.08.2007 в 22:36)
| | Вам здесь экранировать кавычки вам тут не требуется по той причине что ковычки служат указаниме для БД ч то с этого места начинается строка которую необходимо записать.
Попробуйте вот так:
<?
$s=0;
$query=" insert into `marks` (`short`, `count`, `added`, `article`) VALUES (".$_POST['link'].",".$s.",".$_POST['date'].",".$_POST['articles'].")";
$add=mysql_query($query);
?>
|
Должно получится | |
|
|
|
|
|
|
|
для: lifead
(21.08.2007 в 22:59)
| | Да недоглядели обратные ковычки, и то что вы вставляете переменные, а не строки | |
|
|
|
|
|
|
|
для: lifead
(21.08.2007 в 23:00)
| | Обратные кавычки здесь нужны лишь для столбца count...
И не забывать об одинарных кавычках,если ваша переменная-строка | |
|
|
|
|
|
|
|
для: Ralph
(22.08.2007 в 01:35)
| | я вот не огу понять зачем использовать упращенные варианты, Вы ведь тем самым заранее делать "дыры" в безопасности. Если человек учится, пусть он учится писать скрипт правильно, чтоб небыло потом вопросов, а почему здесь так а здесь так. Ведь при обращениии к MySQL необходимо и название таблицы и наименования столбцов заключать в обратные кавычки. | |
|
|
|
|
|
|
|
для: lifead
(22.08.2007 в 08:27)
| | Не обязательно, обратные кавычки нужны только для полей названия которых совпадают с зарезервированными терминами в MYSQL, типа date, count и тд | |
|
|
|
|
|
|
|
для: lifead
(22.08.2007 в 08:27)
| | Я думаю,если я имя столбца к примеру с именем fuckedcolumn пропишу не в переменной,а напрямую в запросе и не окружу ее обратными кавычками,то особой дыры в безопасности это не создаст :) А вот использование в запросе напрямую данных из массива POST... | |
|
|
|
|
|
|
|
для: Ralph
(22.08.2007 в 13:58)
| | Я тоже так считаю, что переменные напрямую нельзя вносить, они могут содержать все что угодно, поэтому я их перед "отправкой" в БД, подвергаю проверке и редактированию. | |
|
|
|