我创建了一个SQL页面,用户可以在其中运行SQL查询。我的问题是,我不知道用户将输入哪些列。因此我无法展示他所要求的东西。 就像他的查询是:从emp中选择id;我如何知道他输入的列名称,因此在结果页面中显示它。 这是您可以使用并帮助我的确切查询。我在代码中使用了很多IF情况。 例如:if(strpos($ query,“id”))然后它显示id列。 请帮我。 并提前感谢!
答案 0 :(得分:1)
你must
开玩笑,让用户在一个全世界都可以访问的网络表单中编写这类语句。
也就是说,当您执行查询时,您可以逐行将结果提取到key => value数组中。键将包含字段名称。请使用mysql_fetch_array。
但是真的。如果你的代码有效,我可以写
SHOW DATABASES;
DROP DATABASE <databasename that is on my screen>
突然间你有一个空的服务器。尽快让此脚本脱机。
答案 1 :(得分:1)
我选择GolezTrol,这根本不是保存。
如果用户使用了“DROP”或“SHOW”这两个词,或者只是允许某些内容,你当然可以检查if语句,但我不知道是否保存...
答案 2 :(得分:1)
只要他限制与php mysql调用相关的sql用户权限,它就是安全的。只给它一个数据库的选择权限,如果它在公共网站上它真的无关紧要(假设你不在乎每个人都能看到数据)。
这会将sql输出格式化为一个体面的表:
$header = null;
$colspan = 0;
while($values = odbc_fetch_array($rs))
{
$result .= "<TR>";
if(is_null($header))
{
foreach(array_keys($values) as $key)
{
$header .= "<TH style='border:1px dashed #00FF00;padding:5px 5px 5px 5px;align:left;'>$key</TH>";
$colspan++;
}
}
foreach($values as $value)
{
$result .= "<TD style='border:1px dashed #00FF00;padding:5px 5px 5px 5px;align:left;'>$value</TD>";
}
$result .= "</TR>";
}
}
$result = "<TABLE style='padding: 1px 1px 1px 1px;border:dash 1px #00FF00;color:#00FF00;'>".
"<tr><td colspan='$colspan'>>>" . $sql . "</tr></td>" .
$header.$result."</TABLE>";
答案 3 :(得分:0)
从数据库查询运行输出时,请执行以下操作:
$query = mysql_query("YOUR_USERS_QUERY_HERE");
if (mysql_affected_rows() > 0) {
while ($row = mysql_fetch_assoc($query)) {
$keys = array_keys($row);
foreach ($keys as $a_key) {
echo $a_key . "=" . $row[$a_key] . " <br /> ";
}
echo "<br />";
}
} else {
echo "No Rows Found";
}
- 编辑 -
要输出标题,您可以执行以下操作:
$first = true;
while ($row = mysql_fetch_assoc($query)) {
if ($first == true) {
//output header code here
$first = false;
}
//output data row code here
}
答案 4 :(得分:0)
mysql_fetch_field可以从结果集中获取列名,以及有关列(类型,max_length等)的许多其他信息,这些信息可能对此类程序中显示有用。