2013-03-11 4 views
0

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

Это отлично работает:

mysql_query("INSERT INTO Courses (CourseName) values ('MyValue')"); 

Но это не работает:

mysql_query("INSERT INTO Courses (CourseName) values ('" + $_POST['course'] + "')"); 

я испытал и я знаю, что $_POST['course']MyValue содержит.
Мне даже разрешено использовать этот синтаксис в php?

Sql Injection не является проблемой в моем случае.

+2

использовать '.' не '+' его php не javascript – Waygood

+1

Mysql_ * устарел. И это подвержено SQL-инъекции ... – ppeterka

+0

'mysql_query (значения INSERT INTO Courses (CourseName) ('". $ _ POST [' course ']."')"); ' –

ответ

0

Использование . вместо +

mysql_query("INSERT INTO Courses (CourseName) values ('" . mysql_real_escape_string($_POST['course']) . "')"); 
+1

Это уязвимо для SQL-инъекций http://php.net/manual/ ru/security.database.sql-injection.php –

+0

@Pekka 웃 вы правы, но я просто хочу очистить это использование '.' вместо' + ' –

+0

. В SQL-инъекции SQL-инъекция не является проблемой. Я знаю об этом, и это ни в коем случае не связано с вопросом. – phadaphunk

0

PHP использует. для конкатенации строк

mysql_query("INSERT INTO Courses (CourseName) values ('".mysql_real_escape_string($_POST['course'])."')"); 

Также используйте mysql_real_escape_string для предотвращения каких-либо ошибок, как О'Нил, имеющий апостроф в нем.

0

1) Используйте mysqli, а не mysql, потому что он устарел.

2) Всегда избежать переменных, поступающие с вашего сайта, с mysql_real_escape строки, если вы все еще используете MySQL ...

3) отладки кода. Самый быстрый в вашем примере просто используйте:

 mysql_query("... your sql string ") or die(mysql_error()) 

Чем вы видите ошибку. (но когда ваш скрипт переходит в прямом эфире, прокомментируйте все «или die (mysql_error()) + код, чтобы другие не могли видеть ошибки и взломать ваш сайт (так просто))

4). является конкатенацией из строк в PHP, не +

+0

Вы правы, я исправил точку 2. Я написал это, потому что я заметил, что только несколько программистов PHP хотят заменить mysql, на mysqli ... и меньше, чем меньше, хочет использовать ориентированный на объект код .. или знать о oop ... Но я знаю mysqli, может быть использован как функция lib .. но вы правы вообще. – Kovge

0
mysql_query("INSERT INTO Courses (CourseName) values ('" + $_POST['course'] + "')"); 

метод конкатенации вы используете, не поддерживаются в PHP. Она поддерживается на других языках. Есть несколько вариантов для создания вашей струны.

Option 1: заменить + на .

mysql_query("INSERT INTO Courses (CourseName) values ('".$_POST['course']."')"); 

Вариант 2: без перерыва

mysql_query("INSERT INTO Courses (CourseName) values ('{$_POST['course']}')"); 

Вы должны прочитать об основах при переходе между языками, особенно в этом случае поиск «PHP конкатенации строк» ​​даст вам то, что вам нужно.

Также: Не используйте MySQL_ *, поскольку он устарел с PHP 5.5. Использовать MySQLi_ * или PDO

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