Php 有没有办法在API Url中定义表名
我是PHP和MySQL的不速之客。我正在寻找一种方法来访问数据库中的表,并以行格式获取其中的数据。我找到了以下代码:Php 有没有办法在API Url中定义表名,php,mysql,api,Php,Mysql,Api,我是PHP和MySQL的不速之客。我正在寻找一种方法来访问数据库中的表,并以行格式获取其中的数据。我找到了以下代码: <?php $con = mysql_connect("localhost","someuser","somepassword"); if (!$con) die('Could not connect: ' . mysql_error()); mysql_select_db("TestDatabase", $con); $result = mysql_que
<?php
$con = mysql_connect("localhost","someuser","somepassword");
if (!$con)
die('Could not connect: ' . mysql_error());
mysql_select_db("TestDatabase", $con);
$result = mysql_query("SELECT * FROM Customer");
$output = array();
if ($result)
while ($row = mysql_fetch_assoc($result))
$output[] = $row;
print(json_encode($output));
mysql_close($con);
?>
现在的问题是我的数据库中有超过24个表。所以我希望有一种方法可以通过访问URL(如API)输入表名。如果有,请帮助我。提前感谢 PHP提供了三种不同的MySQL API扩展:
原始MySQL API
已从PHP5.5.0中删除。如果您使用的是PHP 5.5.0或更高版本,则必须迁移到mysqli
或PDO_MySQL
您可以参考可供进一步参考的文档。有一种非常简单的方法可以通过url传递一些请求类型id(表) 然而,如果不采取适当的措施,这将带来巨大的麻烦 假设您使url看起来像
https://myserver.com/myfile.php?table=aaa
然后将查询更改为“从{$\u GET['table']}中选择*”
。然后,恶意用户可能会诱使您的代码从您可以访问的任何数据库/表中选择数据(通过使用dbname.table
),包括mysql
系统表,如mysql.user
。从您最初的帖子中可以看出,您正在使用root
用户访问数据库,并且很可能它可以访问所有内容-通常,创建一个单独的数据库用户是一个好主意,该用户只可以访问需要做的事情
另一点是,您必须始终验证/转义用户输入,使其进入sql
查询(或使用可以进行变量绑定的API),因为这样任何恶意用户都可能在sql
服务器上执行任意代码。有关更多信息,请查看谷歌的sql注入
作为一个简单的解决方案,我建议使用这样的代码来显式地允许特定的表:
$allowedtables=array('aaa'=>1,'bbb'=>1);
if (!$allowedtables[$_GET['table']])
return;
$query="select * from {$_GET['table']}";
另一个不同但同样重要的主题是,不建议在任何新代码中使用不推荐的API…Hi for tis我创建了一个API,它的url如下:但每当我尝试访问它时,它都会给我一个错误。你能帮忙吗??