我正在编写PHP脚本来制作目录。我的数据库中的相关列是Vid,banner,category和Scategory。 Vid是主键,banner是我的img文件的路径,category和Scategory都是它们各自ID的数字。由于我只是在测试脚本,因此一切都过于简化了。目前有20条记录。
<html>
<head>
<style type="text/css">
</style>
</head>
<body>
<?php
require "config.php";
$sql = "SELECT Vid,banner,category,Scategory FROM display";
$result = $conn->query($sql);
$row = $result;
$min = 10;
$max = 20;
while ($row = mysqli_fetch_assoc($result)) {
implode ('', $row);
$vid = $row['Vid'];
$banner = $row['banner'];
$cid = $row['category'];
$sid = $row['Scategory'];
if ($cid = 2 && $sid = 1){
echo
'
<div style="display:inline-block;">
<div style="border-color:blue; border-style:solid;">
<a href="#test'.$vid.'">
<img src="'.$banner.'" />
</div>
</div>';
echo $vid;
echo $cid;
echo $sid;
if ($vid % 2 == 0){
echo '<br>';
}
}
}
require'close.php';
?>
</body>
</html>
现在代码运行得很好但是很奇怪我使用$ cid和$ sid作为IF循环中的条件。鉴于有20条记录,$ cid和$ sid都有一半的值,因为&#39; 1&#39;因此,当我设置IF条件时,我认为它会返回5条记录,但它会返回所有20条。当我回显$ vid $ cid和$ sid时,它会返回正确的$ vid,但是$ sid返回我设置的任何条件。例如,设置为$ cid = 1和$ sid = 2的条件将返回1:1:2,2:1:2,3:1:2等。
现在这里真的很奇怪,无论为cid设置的条件是什么,它返回为&#39; 1&#39;,如果我设置它&#39; 7&#39;它仍然以&#39; 1&#39;返回。而$ sid会返回任何数字。此外,当我将任一条件设置为null时,它不返回任何内容。
所以我的问题是,如果我写错了,为什么它会按照它的方式或如何写它。
另外作为一个附带问题,当我在<a>
之前添加<img>
时,它会返回与<img>
相关联的正确ID。但是当我在<a>
之后直接放置<img>
时,它会返回下一个迭代行的ID,并且第一次迭代返回空白。任何人都碰巧知道为什么会发生这种情况,因为无论他们在声明中的位置如何,它仍然是同一循环迭代的一部分?
答案 0 :(得分:1)
您正在使用单个相等并将值分配给变量。要比较值,您必须使用==
或===
!
==
和===
有什么区别?
请参阅以下条件以查看差异:
2 == "2" -> Equal
2 == 2 -> Equal
2 === "2" -> Not Equal
2 === 2 -> Equal
未来如何避免这种情况? - 约达条件
您可以将条件更改为以下内容,以确保以正确的方式使用条件。你只能使用它来进行同等比较而不是>, <, <=, >=
。
//throws an error
if (0 = $isNull) { ... }
//the right one
if (0 == $isNull) { ... }
答案 1 :(得分:0)
==
而不是=
。答案 2 :(得分:0)
使用双等于而不是单打。不:
if( $foo = 2 )
...但:
if( $foo == 2 )
您的代码正在更改值而不是测试它们。
答案 3 :(得分:0)
使用if ($cid = 2 && $sid = 1)
更改if ($cid == 2 && $sid == 1)
。我认为你只是错误地做了,因为你的其他if
没问题!
答案 4 :(得分:0)
在你的if语句中,你使用的是单个等于运算符,它需要是==或===