我已经创建了一个查看数据的代码。数据无法在表格中显示......
代码:
<?php //======================================================================================================================= PROCESS DATA ======================================================= START.
include "connectioncomplaint.php";
?>
<?php
$subject = $_GET['type'];
$comment = $_GET['id'];
//echo 'test : ' . $name;
//Tarik data dari sini
$queryDetail = " SELECT * FROM campuscomplaint " . " WHERE subject = '" . $subject . "' AND comment = '" . $comment . "' ";
//echo 'QUERY DETAIL :' . $queryDetail . '<br>' ;
$resultDetail = mysql_query($queryDetail);
//echo 'RESULT DETAIL :' . $resultDetail + 0 . '<br>' ;
$detail = mysql_fetch_array($resultDetail);
//echo $detail . '<br>';
//echo 'detail subject is : ' . $detail['subject'] . '<br>';
//echo 'detail comment is : ' . $detail['comment'] . '<br>';
//echo $detail[$x] . '<br>';
?>
表格代码:
<tr>
<td bordercolor="#FFFFFF" bgcolor="#FFFFFF" class="register style5">From:</td>
<td bordercolor="#FFFFFF" bgcolor="#FFFFFF" class="register style5"><input type="text" name="to"
size="40" maxlength="80" value="<?php echo $detail['userid']; ?>"/></td>
</tr>
<tr>
<td width="38%" bordercolor="#FFFFFF" bgcolor="#FFFFFF" class="register style5">Subject:</td>
<td width="62%" bordercolor="#FFFFFF" bgcolor="#FFFFFF" class="register style5"><input type="text" name="subject" size="40" maxlength="80" value="<?php echo $detail['subject']; ?>"/></td>
</tr>
<tr>
<td bordercolor="#FFFFFF" bgcolor="#FFFFFF" class="register style5">Comment:</td>
<td bordercolor="#FFFFFF" bgcolor="#FFFFFF" class="register style5"><textarea name="comment" rows="5" cols="40"><?php echo $detail['message']; ?></textarea></td>
</tr>
<tr>
<td bordercolor="#FFFFFF" bgcolor="#FFFFFF" class="register style5"><p> </p>
<p> </p></td>
<td bordercolor="#FFFFFF" bgcolor="#FFFFFF" class="register style5"><input type="submit" name="submit" value="Submit Comment" onClick="return OnButton1();"/></td>
</tr>
答案 0 :(得分:0)
将此更改为:
$resulDetail = mysql_query($queryDetail);
到
$resulDetail = mysql_query($queryDetail) or die(mysql_error());
并发布你得到的错误。
答案 1 :(得分:0)
考虑您的代码:
$resulDetail = mysql_query($queryDetail);
$detail = mysql_fetch_array($resultDetail);
mysql_query
失败时可能会发生这种错误 - 并返回false;这意味着$resultDetail
不是资源,也不能用作mysql_fetch_array
的参数。
这意味着您应该在调用$resultDetail
之前测试mysql_fetch_array
是否为false:
$resulDetail = mysql_query($queryDetail);
if ($resulDetail === false) {
// while developping, you can echo the error message
// in production, you should log it to a file
echo mysql_error();
} else {
// query has been run OK
// => You can use the result :
$detail = mysql_fetch_array($resultDetail);
// ...
}
Humph:仔细看看你的代码,你有这个:
$resulDetail = mysql_query($queryDetail);
$detail = mysql_fetch_array($resultDetail);
在第一行中,mysql_query的结果存储在 $resulDetail
,没有t
!
并且,第二行中的,您使用$resultDetail
,t
!
即。用于mysql_fetch_array
的变量不存在 - 因此被视为null
- 不是有效资源。
作为旁注,即使在这种特定情况下这不是问题的原因,但您正在构建这样的查询:
$subject = $_GET['type'];
$comment = $_GET['id'];
$queryDetail = " SELECT * FROM campuscomplaint " . " WHERE subject = '" . $subject . "' AND comment = '" . $comment . "' ";
这意味着在将数据注入SQL查询之前,您不会转义数据 - 这很糟糕,可能会导致SQL injections (这可能会导致执行查询时出错)
在将这些字符串注入SQL查询之前,您应该对这些字符串使用mysql_real_escape_string
:
$subject = mysql_real_escape_string($_GET['type']);
$comment = mysql_real_escape_string($_GET['id']);
$queryDetail = " SELECT * FROM campuscomplaint " . " WHERE subject = '" . $subject . "' AND comment = '" . $comment . "' ";
答案 2 :(得分:0)
您的$ resultDetail不是资源,不能用作mysql_fetch_array()的参数。从我的实践 - 用mysql“sql”测试你的所有查询!你可以在那里找到关于错误的更多详细信息!!!
答案 3 :(得分:0)
shimaTun,正如您在之前的回答中所评论的那样,“提供的参数不是有效的MySQL结果资源”。这意味着您的查询无效,并且mysql_query()返回mysql ERROR资源,而不是RESULT资源。将您的代码更改为以下内容:
$resultDetail = mysql_query($queryDetail);
if (mysql_error()) {
die("MySQL error: " . mysql_error());
}
并重新运行脚本。这将吐出查询导致的确切错误。
顺便提一下,你的td标签中的所有“bordercolor”和“bgcolor”属性是什么?你显然使用CSS,因为它也有“类”属性。为什么不通过使用样式表设置表格单元来节省几千字节的带宽?它还使HTML更容易阅读。
您还需要修复HTML的生成方式。考虑您插入表单的数据包含双引号或标记的情况:
<textarea name="comment" rows="5" cols="40"><?php echo $detail['message']; ?></textarea>
如果$detail['message']
看起来像“Hello,&lt; / textarea&gt;我在你的标签之外,弄乱你的HTML”,该怎么办?生成的html将如下所示:
<textarea name="comment" rows="5" cols="40">Hello, </textarea> I'm outside your tags, messing with your HTML</textarea>
现在comment
的一部分消失了,简化为Hello,
,因为它已从包含<textarea>
中分解出来。除非您的表单数据是预转义存储的(通常是一个坏主意),您应该始终通过htmlspecialchars()函数将其输出到表单中,如下所示:
<textarea><?php echo htmlspecialchars($detail['message']) ?></textarea>
将&lt;,&gt;,&amp;,'和'很好地翻译成他们的角色实体等价物。