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"工作正常.有什么问题 ?还有其他方法吗?
mysqli_connect
^
mysql_real_escape_string
^
Run Code Online (Sandbox Code Playgroud)
你正在混合使用MySQL i和MySQL函数.它们是完全不同的,不兼容的扩展.mysqli::real_escape_string如果必须,请使用.
| 归档时间: |
|
| 查看次数: |
1776 次 |
| 最近记录: |