嗨,希望有人可以提供帮助,
在一个页面上,我有一个表格,你输入一个id号码,在表格提交时,如果id号码在数据库中,它显示来自数据库的信息,如果不是,它应该显示no。请查看下面的代码,如果您输入数据库中的ID号,它正常工作并显示数据库信息,但是如果您输入的数字不在数据库中,则它不显示任何内容,我想要它回应没有。
如果有人能指出我正确的方向,我将非常感激。
include '../book_classified_advertising/dbc.php';
$deletepost = $_POST['webid1'];
$result = mysql_query("SELECT * FROM class WHERE webid='$deletepost'");
while($row = mysql_fetch_array($result))
{
if ($deletepost == $row['webid'])
{
echo $row['text'];
}
else
{
echo 'no';
}
}
答案 0 :(得分:2)
首先,您的代码容易受到SQL Injection的最基本形式的攻击(除非在脚本开头包含的文件中应用某种形式的清理)。
现在,根据您的问题,永远不会达到该条件的else
部分,因为它嵌套在迭代中,通过数据库查询的所有结果。如果没有结果,则while
循环内的语句不会被执行。
答案 1 :(得分:2)
您需要为此重新组织代码:
$result = mysql_query("SELECT * FROM class WHERE webid='$deletepost'");
if( mysql_num_rows($result) == 0) {
echo 'no';
}
else {
while($row = mysql_fetch_array($result)) {
echo $row['text'];
}
}
答案 2 :(得分:1)
因为你所使用的$deletepost
所在的位置如果是这样的话if中的条件总是如果有$deletepost
的任何行
您可以通过mysql_num_rows($result)
喜欢
$$deletepost =2'
查询
$result = mysql_query("SELECT * FROM class WHERE webid='2'");
和
$row['webid'] will be 2
if ($deletepost == $row['webid']) ///its like if(2 == 2)
{
echo $row['text'];
}
尝试类似
的内容 $result = mysql_query("SELECT * FROM class WHERE webid='$deletepost'");
if(mysql_num_rows($result)){
while($row = mysql_fetch_array($result))
{
echo $row['text'];
}}else
{
echo 'no';
}
答案 3 :(得分:0)
问题在于:
while($row = mysql_fetch_array($result))
如果没有结果,那么你的if语句永远不会运行。
答案 4 :(得分:0)
使用Mysql_num_rows检查记录编号
$num_rows = mysql_num_rows($result);
if($num_rows)
{
True condition
}
else
{
Fales condition
}