gpt4 book ai didi

php - 表中的单引号中的双引号

转载 作者:行者123 更新时间:2023-11-29 12:35:32 24 4
gpt4 key购买 nike

在我的表中我有查询:

$sql="SELECT * FROM `jom_x1_organizatori` 
WHERE Organizator='".$sta_dalje."' Order by `Struka`,`Zanimanje`";

$sta_dalje=$_POST["state_id"] 来自另一个表,值为:

  1. ЈУ Гимназија са техничким школама Дервента
  2. “ПРИМУС”Градишка

如果情况 1 有效。

如何查询?

最佳答案

首先:切勿通过将查询字符串与用户输入连接来构建查询!如果这样做,则使用库的专用函数(例如mysqli_real_escape_string)对输入进行转义。如果不逃逸,您将打开一个潜在的安全漏洞(称为 SQL injection )。

"ПРИМУС"Градишка 不起作用,因为连接后查询将无效。现在想象一下,如果我发布以下输入,会发生什么:';删除表 jom_x1_organizatori; --

您的查询将是:

SELECT * FROM `jom_x1_organizatori` 
WHERE Organizator=''; DROP TABLE jom_x1_organizatori; --' Order by `Struka`,`Zanimanje`

只要您可以使用准备好的语句来绑定(bind)参数(并让库来完成艰苦的工作),但始终转义并验证您的输入(使用准备好的语句,转义是由库完成的) !

$sta_dalje = (sting)$_POST["state_id"]; // Do filtering, validating, force type convertation, etc!!

// Prepare the statement (note the question mark at the end: it represents the parameter)
$stmt = $mysqlLink->mysqli_prepare(
"SELECT * FROM `jom_x1_organizatori` WHERE Organizator = ?"
);

// Bind a string parameter to the first position
$stmt->bind_param("s", $sta_dalje);

有关准备好的语句的更多信息:

请注意,旧的mysql扩展已被弃用,如果没有必要,请勿使用它!

只是旁注

不要使用SELECT * FROM,始终列出列。它可以防止查询不必要的数据,并且您的代码将更能抵抗数据库更改,而且调试将变得更加简单。

关于php - 表中的单引号中的双引号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26839866/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com