在php数据库查询中插入变量

时间:2013-03-11 17:09:04

标签: php mysql

这很简单,但我似乎无法找到我正在寻找的答案。

这非常有效:

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

但这不起作用:

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

我测试过,我知道$_POST['course']包含MyValue 我甚至允许在php中使用这种语法吗?

在我的案例中,

Sql Injection不是一个问题。

4 个答案:

答案 0 :(得分:0)

使用.代替+

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

答案 1 :(得分:0)

PHP使用。连接字符串

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

还可以使用mysql_real_escape_string来防止任何错误,例如o'neil中有单引号。

答案 2 :(得分:0)

1)使用mysqli,而不是mysql,因为它已被弃用。

2)如果你仍然使用mysql,总是使用mysql_real_escape字符串来逃避来自你网站的变量......

3)调试你的代码。您的示例中最快的只是使用:

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

比你看到的错误。 (但是当你的脚本上线时,注释掉所有“或者死掉(mysql_error())+代码,这样其他人就看不到错误,并破解你的网站(这么容易))

4)。是php中字符串的串联,而不是+

答案 3 :(得分:0)

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

PHP不支持您正在使用的字符串连接方法。它以其他语言支持。构建字符串有多种选择。

选项1:将+替换为.

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

选项2:没有休息

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

您应该阅读语言之间的基础知识,特别是在这种情况下,搜索“PHP String Concatenation”将为您提供所需的信息。

另外:不要使用MySQL_ *,因为它已从PHP 5.5开始被弃用。使用MySQLi_ *或PDO