Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/245.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在php数据库查询中插入变量_Php_Mysql - Fatal编程技术网

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

在php数据库查询中插入变量,php,mysql,Php,Mysql,这很简单,但我似乎找不到我想要的答案 这非常有效: mysql_query("INSERT INTO Courses (CourseName) values ('MyValue')"); 但这不起作用: mysql_query("INSERT INTO Courses (CourseName) values ('" + $_POST['course'] + "')"); 我测试过,我知道$\u POST['course']包含MyValue 我甚至可以在php中使用这种语法吗? Sql注入在

这很简单,但我似乎找不到我想要的答案

这非常有效:

mysql_query("INSERT INTO Courses (CourseName) values ('MyValue')");
但这不起作用:

mysql_query("INSERT INTO Courses (CourseName) values ('" + $_POST['course'] + "')");
我测试过,我知道
$\u POST['course']
包含
MyValue

我甚至可以在php中使用这种语法吗?


Sql注入在我的例子中并不重要。

使用
而不是
+

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

PHP使用。串接字符串

mysql_query("INSERT INTO Courses (CourseName) values ('".mysql_real_escape_string($_POST['course'])."')");
还可以使用mysql\u real\u escape\u字符串来防止任何错误,例如o'neil在其中有一个引号。

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

2) 如果您仍然使用mysql,请始终使用mysql\u real\u转义字符串转义来自您站点的变量

3) 调试代码。在您的示例中,最快的方法就是使用:

      mysql_query("... your sql string ") or die(mysql_error())
比你看到的错误。(但是当你的脚本上线时,注释掉所有”或者死亡(mysql_error())+代码,这样其他人就看不到错误,然后入侵你的网站(非常简单))

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

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字符串连接”将为您提供所需的内容


另外:不要使用MySQL,因为它在PHP5.5中就已经被弃用了。使用MySQLi或PDO

use.“'not'+'其PHP not javascriptMysql'.*已被弃用。这很容易导致SQL注入…
MySQL_查询(“INSERT-INTO-Courses(CourseName)值('$'u POST['course'].'));
如果您只是在学习PHP和MySQL数据库,请使用准备好的语句学习MySQLi或PDO库,而不是不推荐的MySQL库-从start@Wiggler易受SQL注入攻击这易受SQL注入@Pekka攻击웃 你是对的,但我想澄清的是,在我的案例中,使用
而不是
+
SQL注入根本不是一个问题。我知道这一点,它与问题毫无关系。@Pha显示易受攻击的代码仍然不是一个好的做法。人们从中学习答案(我在中编辑了它)你是对的,我纠正了第2点。我写了这篇文章,因为我注意到只有少数php程序员想替换mysql,mysqli…并且不到一半的人想使用面向对象的代码..或者知道oop…但我知道mysqli可以用作函数库..但你是对的。