MySQL获取不返回任何内容

时间:2013-06-07 07:44:07

标签: php mysql fetch

我想基于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。

6 个答案:

答案 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注入。最好切换到PDOMySQLi并使用准备好的声明。

另外,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)

  1. 确保$url不为空。
  2. 你不能在数组中做$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();

?>