gpt4 book ai didi

mysql - SQL查询不知道变量

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

我正在尝试使用一个简单的下拉列表来查询数据库中的一些表,其中列出了表的名称。该查询只有一条记录结果,显示数据库中注册的最年轻的机构的名称和年龄!

$table = $_GET['table'];
$query = "select max('$table'.est_year) as 'establish_year' from '$table' ";

我需要将表的名称作为变量发送到查询器 php 文件。当我在查询语句中输入变量名时,无论方法是GET还是POST,都会出现错误:

"You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '.order) as 'last' from 'customers'' "

最佳答案

您将表名括在单引号中,这不是有效的 SQL(这是字符串语法,而不是表名)。您要么根本不将名称包裹起来,要么将其包裹在反引号中(在美式键盘布局上,这是 TAB 上方的键)。

您也不应该引用别名builted_year:

select max(`$table`.est_year) as establish_year from `$table`

此外,您的代码很容易受到 SQL 注入(inject)的攻击。 Fix this immediately!

更新(sql注入(inject)防御):

在这种情况下,最合适的操作可能是根据白名单验证表名称:

if (!in_array($table, array('allowed_table_1', '...'))) {
die("Invalid table name");
}

关于mysql - SQL查询不知道变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11169104/

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