0

我想根据 URL 从 MySQL 获取内容。例如,当 URL 为 时显示整个 FAQ /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;
}
?>

哦,在你这么说之前,我知道mysql_PHP 5.5 和更高版本中不推荐使用的函数,但我目前使用的是 PHP 5.3.10。

4

6 回答 6

2

如果要使用对象表示法,则需要调用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 注入。最好切换到PDOMySQLi并使用准备好的语句。

此外,or die(mysql_error())这是非常糟糕的做法。您应该通过测试false来自mysql_query().

于 2013-06-07T07:46:32.147 回答
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(或:使用文本中的文本需要知道的内容),因为您显然缺少这些基础知识。

于 2013-06-07T07:51:07.370 回答
0

var_dump($res)它是一个数组。不是一个对象。并且不要使用mysql_*它过时的。采用mysqli_*

于 2013-06-07T07:46:09.390 回答
0
  1. 确保$url不为空。
  2. 你不能在一个数组中做(如果是一个对象但是是一个数组$res->content,那将是正确的。)。改为使用。$res$res$res['Content']
于 2013-06-07T07:47:08.453 回答
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'];
}
?>

像这样使用。您引用了变量。为什么?

于 2013-06-07T07:47:42.283 回答
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();

?>
于 2013-06-07T08:04:16.910 回答