"mysql_real_escape_string"错误DESPITE连接到数据库..我做错了什么?

din*_*ist -2 javascript php mysql-real-escape-string prepared-statement

好吧,这让我发疯了.我的PHP版本是5.2.17,MySQL版本是5.1.59

我的javascript(jquery)是:

    $(document).ready(function(){$.post("file.php",{"dropTable":tableName}, function(data){});});
Run Code Online (Sandbox Code Playgroud)

这是页面加载时的ajax调用

我的"file.php"包含以下代码:

    <?php

        require_once"getDBParameters.php";

        $dbParameters = getDBParameters();
        if($dbc = mysqli_connect($dbParameters['db_host'], $dbParameters['db_username'], $dbParameters['db_pass'], $dbParameters['db_name'])){

            if(isset($_POST['dropTable'])){
                $dropTable= $_POST['dropTable'] ;               
                $escapedRealString = mysql_real_escape_string($dropTable, $dbc );

                echo ($escapedRealString );
                exit();
            }
        }
    ?>
Run Code Online (Sandbox Code Playgroud)

我得到一个PHP错误说:

    mysql_real_escape_string() expects parameter 2 to be resource, object given in file.php on line 9
Run Code Online (Sandbox Code Playgroud)

如果我使用预准备语句,相同的连接可以正常工作,但是,在这种情况下我不能使用预准备语句,因为我正在根据用户输入删除MYSQL表:

    DROP TABLE $dropTable
Run Code Online (Sandbox Code Playgroud)

PHP手册说我不能使用如下的预处理语句:

    prepare("DROP TABLE ?")
Run Code Online (Sandbox Code Playgroud)

我可以向你保证,函数"getDBParameters"工作正常.有什么问题 ?还有其他方法吗?

dec*_*eze 5

mysqli_connect
     ^
mysql_real_escape_string
     ^
Run Code Online (Sandbox Code Playgroud)

你正在混合使用MySQL i和MySQL函数.它们是完全不同的,不兼容的扩展.mysqli::real_escape_string如果必须,请使用.