PHP Mysql不接受表名作为变量

PHP Mysql不接受表名作为变量,php,mysql,syntax,var,Php,Mysql,Syntax,Var,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) {

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\u 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."' ");
}

你能给我们看一个错误部分吗?当你调用
recursiveDelete($current['id'],$db_conn)时,你没有在
recursiveDelete()
中传递$table更新我的帖子。:)@RenatoRamosPuma好的,您可以尝试作为调试测试
echo“从“$table.”中选择*,其中Padre=“$id.”“(可选)。
\n”)这应该很有见地。@RenatoRamosPuma很高兴我能帮上忙。:)我不明白的是,为什么它不会因为没有足够的参数而抛出一个错误呢?大师,您已经找到了解决方案,非常感谢。:)@Chipster PHP允许使用不正确的参数号。我打印了一个警告,但没有抛出错误。