gpt4 book ai didi

PHP Mysql不接受表名作为变量

转载 作者:行者123 更新时间:2023-11-29 05:02:51 25 4
gpt4 key购买 nike

mysql无法识别函数中变量中我的表的名称,它会是什么?

我的 PHP 代码:

$TableMaster = "table_name";
function recursiveDelete($id,$db,$table){
$db_conn = $db;
$query = $db->query("SELECT * FROM ".$table." WHERE Padre = '".$id."' ");
if ($query->rowCount()>0) {
while($current=$query->fetch(PDO::FETCH_ASSOC)) {
recursiveDelete($current['id'],$db_conn);
}
}
$db->exec("DELETE FROM ".$table." WHERE id = '".$id."' ");
}
recursiveDelete($_POST['id'],$db,$TableMaster);

错误 PHP 日志:

PHP Fatal error:  Uncaught exception 'PDOException' with message 'SQLSTATE[42000]: Syntax error or access violation: 1064 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 'WHERE Father = '99'' at line 1' in

注意:但是当我在语句中直接写我的mysql表名是没有问题的。

发生了什么事?

最佳答案

在进行递归调用时,您遗漏了 $table 参数。

也不需要$db_conn变量,你可以直接使用$db

function recursiveDelete($id,$db,$table){
$query = $db->query("SELECT * FROM ".$table." WHERE Padre = '".$id."' ");
if ($query->rowCount()>0) {
while($current=$query->fetch(PDO::FETCH_ASSOC)) {
recursiveDelete($current['id'],$db,$table);
}
}
$db->exec("DELETE FROM ".$table." WHERE id = '".$id."' ");
}

关于PHP Mysql不接受表名作为变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54719554/

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