当前位置: 首页 > 知识库问答 >
问题:

在“?”附近使用的语法正确吗按[副本]命令

胡野
2023-03-14
$array = array();
$stmt = $connection->prepare("SELECT * 
                              FROM ?
                              ORDER BY `score` DESC");
$stmt->bind_param("s", $name);
$stmt->execute();
$data = $stmt->get_result();

while($row = $data->fetch_assoc()){
    array_push($array, $row);
}

未捕获的mysqli_sql_exception:您的SQL语法中有一个错误;请检查与您的MariaDB服务器版本相对应的手册,以获得在“near”中使用的正确语法?在第2行按'score'desc'排序。..

我已经研究了在‘?’附近使用的正确语法。但我认为我的问题不同。

共有1个答案

幸阳波
2023-03-14

你的意图是可以的。但是,数据库不支持将表名作为变量传递;请记住,查询计划程序需要能够通过只查看参数化查询(而不查看参数)来准备语句(即生成其执行计划)。参数用于将文字值传递给查询。

因此,您需要首先在应用程序中执行验证(针对固定的值列表,或者通过查询information_schema.tables),然后在查询中连接表名:

$stmt = $connection->prepare("SELECT * FROM `$name` ORDER BY `score` DESC");
$stmt->bind_param("s", $name);
$stmt->execute();
 类似资料:
  • 问题内容: 我有一个Java代码: 然后我有SQLException: 您的SQL语法有误;检查与您的MySQL服务器版本相对应的手册,以在’?’附近使用正确的语法。 问题答案: 您应该执行不带任何参数的,如下所示: 使用参数调用将按原样执行提供的查询(没有绑定参数)。

  • 当我导入数据库时,我在PHPMyadmin中遇到了一些问题。 您的SQL语法有错误;检查与您的MySQL server版本相对应的手册,以了解在第3行“”附近使用的正确语法(`form_id`varchar(18)COLLATE utf8_general_ci;NOT NULL DEFAULT“,) 有人知道我该怎么解决吗?

  • 问题内容: 我是学生,这是家庭作业…表格在那里,但没有插入数据。 感谢您的任何建议 SQL语句: 问题答案: 您在其中没有子句(“ Ledonna”之后的子句) 请注意,如果您双击Management Studio中的错误消息,它将带您进入代码的问题位。

  • 语法中有错误;查看与服务器版本相对应的手册,以了解第1行附近使用的正确语法 当我试图为我的帐单应用程序生成帐单时,上面的错误将会出现。下面是我的应用程序的代码。请给我一些解决这个错误的方法..................

  • 问题内容: 我已经浏览了其他几个此类问题,但没有找到一个可以帮助我解决此问题的问题。我想做的是:我想为所有员工创建一个表,以分配将在其他多个表中使用的表。那张桌子和其他桌子工作正常。当我尝试基于该表创建新表时,就会出现我的问题,这样我就可以仅基于特定类型的员工来调出信息。在所有三个表的语句上,我得到此错误: ‘(’附近的语法不正确。期望的ID。 我一直在搜索如何解决它,但是我没有尝试过。我想念什么

  • 问题内容: 我认为我需要做的是重新格式化sql字符串,以防止某些字符进入。 任何帮助表示赞赏。 这是代码: 这是输出(我将sql命令字符串作为测试推出了): 问题答案: 无论您要在“ Auran”记录之后插入的任何数据,都带有单引号/撇号。当您使用字符串串联来构造查询时,这是一个 巨大的 风险,使您容易遭受SQL注入攻击。 将您正在构造的字符串粘贴到SSMS或其他可以向您突出显示SQL语法的工具中