Javascript &引用;mysql“U real”U escape“U string”;连接到数据库时出错..我做错了什么?
好吧,这让我发疯了。 我的PHP版本是5.2.17,MySQL版本是5.1.59 我的javascript(jquery)是: 这是页面加载时的ajax调用 我的“file.php”包含以下代码:Javascript &引用;mysql“U real”U escape“U string”;连接到数据库时出错..我做错了什么?,javascript,php,prepared-statement,mysql-real-escape-string,Javascript,Php,Prepared Statement,Mysql Real Escape String,好吧,这让我发疯了。 我的PHP版本是5.2.17,MySQL版本是5.1.59 我的javascript(jquery)是: 这是页面加载时的ajax调用 我的“file.php”包含以下代码: <?php require_once"getDBParameters.php"; $dbParameters = getDBParameters(); if($dbc = mysqli_connect($dbParameters['db
<?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();
}
}
?>
如果我使用prepared语句,同样的连接也能很好地工作,但是,在这种情况下,我不能使用prepared语句,因为我正在删除一个基于用户输入的MYSQL表:
DROP TABLE $dropTable
PHP手册中说我不能使用准备好的语句,如:
prepare("DROP TABLE ?")
我可以向您保证函数“getDBParameters”工作正常。
有什么问题吗?还有其他解决办法吗
mysqli_connect
^
mysql_real_escape_string
^
您正在混合使用MySQLi和MySQL函数。它们是完全不同的、不兼容的扩展。如果必须使用,请使用。如果正在使用,则不能使用mysql转义函数
您也可以使用
请注意,由于PHP mysql和mysqli库是不同的,因此参数类型也不同。mysql使用,而mysqli是
编辑:如上所述,删除基于用户输入的表是危险的。
在这种情况下,我不能使用预先准备好的语句,因为我正在删除基于用户输入的MYSQL表。
哇……简单的游戏很简单。@Damien嘿,他至少提供了一个干净的界面。不需要波比桌子;o) @DamienPirsy,是的……我正在开发一个私人网站的后端。。。它将只有一个用户登录。。。不过,还是要采取预防措施…谢谢你的宝贵评论tho@dinchakpianist当然依我看,在采取这种破坏性行动之前,你至少应该提供一些确认;为什么要扔掉整张桌子,而不仅仅是清空?那些是临时桌吗?如果数据库用户具有创建/删除表权限,则仍然存在风险。所有的一切都应该在一个非常好的身份验证系统的背后,如果我可以投入2美分的话:删除表永远不应该是用户需要做的事情,除非你正在编写一个像phpMyAdmin这样的数据库管理系统。否则,“数据库”是最终用户不需要知道的实现细节。
prepare("DROP TABLE ?")
mysqli_connect
^
mysql_real_escape_string
^