PHP sql查询没有返回任何内容

Posted

技术标签:

【中文标题】PHP sql查询没有返回任何内容【英文标题】:PHP sql query isn't returning anything 【发布时间】:2014-04-23 20:30:06 【问题描述】:

以下php代码:

$dbc = mysql_connect ('localhost','root','abcde');

if (!$dbc) 
die('Not Connected:' . mysql_error ());


$db_selected = mysql_select_db ('db_test', $dbc);

if (!$db_selected) 
die ("Can't Connect :" .mysql_error());


$query="SELECT * FROM 140423 WHERE GAME='*** of Clans'";
//add "result"
$result=mysql_query($query);

if (!$query) 
die ("Can't Connect :" .mysql_error());


echo $result;

不返回任何东西。

我应该使用 print 而不是 echo?

另外,如果我改变了

echo $result;

echo 'whatever';

它在我的帖子上返回“whatever”。

帮助?

【问题讨论】:

mysql_query的返回值是一个资源 查看mysql_query examples at php.net。 将查询复制并粘贴到mysql并运行时会发生什么?那里有返回结果吗? 用反引号括起来你的表名。表名不能以数字开头或仅由数字组成。另外,如果您要查看数据,则需要遍历它。您不能只是 echo $result; 并期望数据会神奇地出现。 更好的是,不要给你的表名一个名字。 【参考方案1】:

来自手册:

标识符可以以数字开头,但除非被引用,否则标识符可能不完全由数字组成。

http://dev.mysql.com/doc/refman/5.1/en/identifiers.html

这正是你正在做的,不应该做的。

解决方案:

    为您的表格选择一个不同的名称,最好由字母组成。

    在表名周围使用反引号。

另外,如果你想查看数据,你需要使用循环。

即:

$query="SELECT * FROM `140423` WHERE GAME='*** of Clans'";

    while ($row = mysql_fetch_assoc($query)) 
            
                $var = $row["column"]; // the column of your choice
            

        echo $var;

重写:

$dbc = mysql_connect ('localhost','root','abcde');

if (!$dbc) 
die('Not Connected:' . mysql_error ());


$db_selected = mysql_select_db ('db_test', $dbc);

if (!$db_selected) 
die ("Can't Connect :" .mysql_error());


$query="SELECT * FROM `140423` WHERE GAME='*** of Clans'";
//add "result"
$result=mysql_query($query);

// as pointed out already
    if (!$result) 
    die ("Can't Connect :" .mysql_error());
    

echo $result; // this is up to you

// if you want to see data from your table, loop through it.

    while ($row = mysql_fetch_assoc($query)) 
            
                $var = $row["column"]; // the column of your choice
            

        echo $var;

脚注:

mysql_*函数弃用通知:

http://www.php.net/manual/en/intro.mysql.php

此扩展自 PHP 5.5.0 起已弃用,不推荐用于编写新代码,因为它将在未来被删除。相反,应使用 mysqliPDO_MySQL 扩展名。在选择 MySQL API 时,另请参阅MySQL API Overview 以获得更多帮助。

这些函数允许您访问 MySQL 数据库服务器。有关 MySQL 的更多信息,请访问 »http://www.mysql.com/。

可以在 »http://dev.mysql.com/doc/ 找到 MySQL 文档。

【讨论】:

【参考方案2】:

mysql_query 返回资源或 false。您需要使用各种 fetch 函数之一来操作资源。

您应该查看$result 是否为假,而不是查看$query 是否为假。

if (!$result) 
die ("Can't Connect :" .mysql_error());

【讨论】:

应该仍然有输出说它是资源而不是空白,所以它不是真正的“答案” @Dagon,从代码来看,它很可能返回 false,因此由于查询失败而没有回显任何内容。如果你回显 false,它不会回显任何内容。 我更新了我的答案以查找 $result,而不是 $query。【参考方案3】:

之后

$result=mysql_query($query);

if (!$query) 
die ("Can't Connect :" .mysql_error());

使用

while($row = mysql_fetch_array($result)) 
  echo $row['YourTableFieldName'];

或使用

while($row = mysql_fetch_array($result, MYSQL_ASSOC)) 

    // If you want to display all results from the query at once:
    print_r($row);

    // If you want to display the results one by one
    echo $row['YourTableFieldName1'];
    echo $row['YourTableFieldName2']; 

【讨论】:

这很棒。所以,现在我有一个回显单个数据项的脚本,在这种情况下返回“*** of Clans”。 有没有办法使用它在数据库中一次搜索多个表? 最后,有没有办法用空格来回显结果?现在它们作为一行返回。

以上是关于PHP sql查询没有返回任何内容的主要内容,如果未能解决你的问题,请参考以下文章

MSSQL程序没有通过php查询返回任何内容

没有返回任何内容时,SQL Server 查询运行速度较慢

SQL 查询为 PHP 中的 ID 列返回不正确的值

PHP判断sql语句是不是执行成功

休眠选择查询不返回任何内容

PHP sql查询不返回表格内容