我想基于URL从MySQL获取内容。
例如,当网址为/index.php?Name=FAQ
时,请显示整个常见问题解答。
我怎么能解决这个问题?
<?php
require("configish.php");
mysql_connect("$hosty", "$uname", "$paswd") or die ("Cannot connect");
mysql_select_db("$dbnme") or die ("Cannot select database");
$url = $_GET['Name'];
$sql="SELECT * FROM Pages WHERE Name='".$url."'";
$result=mysql_query($sql) or die(mysql_error());
mysql_close();
while($res = mysql_fetch_array($result)) {
echo $res->Content;
}
?>
哦,在你说之前,我知道在PHP 5.5及更高版本中不推荐使用mysql_
函数,但我现在正在使用PHP 5.3.10。
答案 0 :(得分:3)
如果您想使用对象表示法,则需要调用mysql_fetch_oject()
。
$url = mysql_real_escape_string($_GET['Name']);
$sql="SELECT * FROM Pages WHERE Name='".$url."'";
$result=mysql_query($sql);
if($result) {
while($res = mysql_fetch_object($result)) {
echo $res->Content;
}
} else {
trigger_error(mysql_error()); // this silently writes to the log file
echo 'Page not found';
}
请勿在查询后关闭MySQL连接,因为您仍需要连接来检索结果集。
如果必须使用mysql_*
库,请务必使用mysql_real_escape_string()
来阻止SQL注入。最好切换到PDO或MySQLi并使用准备好的声明。
另外,or die(mysql_error())
实际上是不好的做法。您应该通过测试false
的{{1}}返回值来正确处理错误。
答案 1 :(得分:1)
<?php
require("configish.php");
// DON'T QUOTE VARIABLES, IT'S UNNECESSARY
mysql_connect($hosty, $uname, $paswd) or die ("Cannot connect");
mysql_select_db($dbnme) or die ("Cannot select database");
// ESCAPE YOUR VALUES!!! CAN'T PUT ENOUGH !!! ON THIS!!!!
$url = mysql_real_escape_string($_GET['Name']);
$sql = "SELECT * FROM Pages WHERE Name='$url'";
$result = mysql_query($sql) or die(mysql_error());
// DON'T CLOSE YOUR CONNECTION BEFORE YOU FETCHED YOUR DATA
//mysql_close();
while ($res = mysql_fetch_assoc($result)) {
// ACCESS AS ARRAY IF YOU'RE FETCHING AS ARRAY
echo $res['Content'];
}
阅读The Great Escapism (Or: What You Need To Know To Work With Text Within Text),因为您显然缺少这些基础知识。
答案 2 :(得分:0)
var_dump($res)
是一个数组。不是一个对象。并且不要使用过时的mysql_*
。使用mysqli_*
答案 3 :(得分:0)
$url
不为空。 $res->content
(如果$res
是一个对象但$res
是一个数组,那就是正确的。)。请改用$res['Content']
。答案 4 :(得分:0)
<?php
require("configish.php");
mysql_connect($hosty, $uname, $paswd) or die ('Cannot connect');
mysql_select_db($dbnme) or die ('Cannot select database');
$url = $_GET['Name'];
$sql="SELECT * FROM Pages WHERE Name='".$url."'";
$result=mysql_query($sql) or die(mysql_error());
mysql_close();
while($res = mysql_fetch_array($result)) {
echo $res['Content'];
}
?>
像这样使用。你引用了变量。为什么呢?
答案 5 :(得分:0)
您应该尝试此代码
<?php
require("configish.php");
mysql_connect("$hosty", "$uname", "$paswd") or die ("Cannot connect");
mysql_select_db("$dbnme") or die ("Cannot select database");
$url = mysql_real_escape_string($_GET['Name']);
$sql="SELECT * FROM Pages WHERE Name='".$url."'";
$result=mysql_query($sql) or die(mysql_error());
while($res = mysql_fetch_array($result)) {
echo $res['tableColumnName'];
}
mysql_close();
?>