Mysql 固定值上的SQL注入?

Mysql 固定值上的SQL注入?,mysql,Mysql,我知道,如果要插入变量,最好使用mysqli\u real\u escape\u字符串。但是,如果我要插入一个不是变量的固定值,我需要使用这个函数吗 例如,如下面的语法。我在status列中插入了一个变量名和一个值“1”。这样做是否安全,以避免对列状态进行SQL注入?因为它不是一个变量 "INSERT INTO customer(name, status) VALUES ('".mysqli_real_escape_string($conn, $name) ."', '1')"; 使用mysq

我知道,如果要插入变量,最好使用mysqli\u real\u escape\u字符串。但是,如果我要插入一个不是变量的固定值,我需要使用这个函数吗

例如,如下面的语法。我在status列中插入了一个变量名和一个值“1”。这样做是否安全,以避免对列状态进行SQL注入?因为它不是一个变量

"INSERT INTO customer(name, status) VALUES ('".mysqli_real_escape_string($conn, $name) ."', '1')";

使用mysqli时,使用准备好的语句是最安全的:

$stmt=$mysqli->prepare("INSERT INTO customer(name, status) 
  VALUES (?, '1')";
$stmt->bind_param("s", $name);
(有关更详细的工作代码,请参阅)

在这种情况下,可以保持静态值不变,没有人可以替换这些值。您还可以更改表格:

ALTER TABLE customer ALTER COLUMN status DEFAULT '1';

然后你甚至不必再设置它了。

没有异议,需要对常量上的值进行转义,因为SQL注入不会在静态事物上进行。

你知道什么是SQL注入吗?我从这里得到了这个想法:但是他们的示例都是关于使用变量的。我正忙着回答另一个问题,现在当我回到派对结束了,很高兴你得到了答案如果我要插入一个固定值,例如,插入客户(状态)值('1')。。。。有必要使用事先准备好的报表吗?没有,根本不需要。当您有任何动态变量时,准备好的语句是最好的,因为您不必考虑转义、连接字符串和引号。谢谢,我只需要知道这些。