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 起已弃用,不推荐用于编写新代码,因为它将在未来被删除。相反,应使用 mysqli 或 PDO_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查询没有返回任何内容的主要内容,如果未能解决你的问题,请参考以下文章