【问题标题】:PHP sql query isn't returning anythingPHP sql查询没有返回任何内容
【发布时间】: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='Clash 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并运行时会发生什么?那里有返回结果吗?
  • 用反引号括起来你的表名。表名不能以数字开头或仅由数字组成。另外,如果您要查看数据,则需要遍历它。您不能只是 echo $result; 并期望数据会神奇地出现。
  • 更好的是,不要给你的表名一个名字。

标签: php sql wordpress


【解决方案1】:

来自手册:

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

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

解决方案:

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

  2. 在表名周围使用反引号。

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

即:

$query="SELECT * FROM `140423` WHERE GAME='Clash 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='Clash 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']; 
    }
    

    【讨论】:

    • 这很棒。所以,现在我有一个回显单个数据项的脚本,在这种情况下返回“Clash of Clans”。
    • 有没有办法使用它在数据库中一次搜索多个表?
    • 最后,有没有办法用空格来回显结果?现在它们作为一行返回。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-01
    • 2012-07-17
    • 2018-02-18
    • 1970-01-01
    • 2020-09-25
    相关资源
    最近更新 更多