如何获取此代码的输出。有时它显示输出,有时它不显示?

Posted

技术标签:

【中文标题】如何获取此代码的输出。有时它显示输出,有时它不显示?【英文标题】:how to get output of this code. sometimes it shows output and sometime it doesnot? 【发布时间】:2013-08-20 12:49:36 【问题描述】:
    <?php
include 'config.php';
$tid = $_GET['tid'];
$sql="SELECT FROM topics where tid='$tid'";
$result=mysql_query($sql);
while($rows=mysql_fetch_array($result))
?> 
<div class="topics"><font size="4"><?php echo $rows['title']; ?></font></div><div class="tdm"><br/><center><img src="http://appricart.com/test/img/<?php echo $rows['photo']; ?>"  /><br/>
<small><?php echo $rows['message']; ?></small></div>
<?php

include 'foot.php';
?>

有时这段代码有效,有时它不能帮助我解决这个问题。

显示这个错误

mysql_fetch_array() expects parameter 1 to be resource

【问题讨论】:

当您的查询出现错误时,您仍然使用$result 调用mysql_fetch_array,这不是合法资源。您还应该注意到 mysql 扩展已被弃用。您应该使用更现代的,例如 Mysqli 或 PDO Mysql 我假设您的查询是复制/粘贴错误,即。 SELECT title, photo, message FROM ...SELECT * FROM ... 而不是 SELECT FROM ...。此外,您可以通过在查询中直接使用 $_GET 值而不转义它来打开 SQL 注入。 【参考方案1】:

您没有进行任何错误检查来防止这种情况发生。当您的 MySQL 查询无法执行时会导致此错误。你有一个mysql_query() 语句,结果存储到一个变量中。稍后,您将在 mysql_fetch_array() 语句中使用该变量。

如果mysql_query 失败,则返回FALSE,这是一个布尔值。 mysql_fetch_array 期望它改为资源。

要解决此问题并了解查询失败的原因,请使用mysql_error() 函数。

$result = mysql_query($sql);
if (!$result)  
    die('Query failed because: ' . mysql_error());

else 
//proceed


在这种情况下,您没有从数据库中选择任何内容,就像上面提到的肖恩一样。

尝试以下方法:

$sql = "SELECT * FROM topics where tid='$tid'";

或者

$sql = "SELECT topics FROM topics where tid='" . $tid . "'";

Also, please, don't use mysql_* functions in new code。它们不再维护and are officially deprecated。看到red box?改为了解 prepared statements,并使用 PDO 或 MySQLi - this article 将帮助您决定哪个。如果你选择 PDO,here is a good tutorial。

【讨论】:

【参考方案2】:
 <?php
include 'config.php';
$tid = $_GET['tid'];
$sql="SELECT FROM topics where tid='$tid'"; // here is the error
$result=mysql_query($sql);

您没有从表格主题中选择任何内容。因此它显示错误..

$sql="SELECT * FROM topics where tid='$tid'"; // this would be better

更多信息请访问mysql_fetch_array

【讨论】:

以上是关于如何获取此代码的输出。有时它显示输出,有时它不显示?的主要内容,如果未能解决你的问题,请参考以下文章

《游戏引擎架构》笔记九

php 有时候难以输出显示的信息可以用ob缓冲区来做

Bash:如何在使用微调器时获取命令的退出代码?

如何在JFrame中刷新图像?

Java石头剪刀布程序不打印正确的输出

下载的图像并不总是立即显示