Php For循环中的If语句=问题
由于某些原因,我的if语句不能按预期工作Php For循环中的If语句=问题,php,Php,由于某些原因,我的if语句不能按预期工作 $query = "SELECT title FROM blog"; $result = mysql_query($query); $rows = mysql_num_rows($result); for ($j = 0; $j < $rows; ++$j) { if (isset($_POST['$j'])) { $id = mysql_real_escape_string($_POST['id']);
$query = "SELECT title FROM blog";
$result = mysql_query($query);
$rows = mysql_num_rows($result);
for ($j = 0; $j < $rows; ++$j)
{
if (isset($_POST['$j']))
{
$id = mysql_real_escape_string($_POST['id']);
$query = "DELETE FROM blog WHERE id='$id'";
mysql_query($query);
echo 'Deleted post.. ';
echo '<a href="blog.php">Click here</a>';
}
else
{
echo 'Failed!';
}
}
$query=“从博客中选择标题”;
$result=mysql\u query($query);
$rows=mysql\u num\u rows($result);
对于($j=0;$j<$rows;++$j)
{
如果(isset($_POST['$j']))
{
$id=mysql\u real\u escape\u字符串($\u POST['id']);
$query=“从blog中删除,其中id='$id';
mysql\u查询($query);
回音“已删除的帖子…”;
回声';
}
其他的
{
echo“失败!”;
}
}
发生的情况是,“删除的帖子…”和“链接”与我在表blog中的行数相呼应。我的表中只有一行被删除,这正是我想要的。每次按下一个按钮,那么它不应该只重复一次“删除的帖子…”和其他时间的“失败”吗?谢谢=)
注意:我还是编程新手,如果这个问题很愚蠢的话,我很抱歉
注2:我在另一页上有许多按钮。。它们由数字“1、2、3”等标记。变量不以单引号解析,您需要使用双引号<代码>isset($\u POST[“$j”] 此外,您试图在循环中反复删除同一记录,您正在检查是否设置了
$\u POST[“$j”]
,但使用$\u POST['id']
更改:
$_POST['$j'] // here, due to the single quotes you're
// always testing for the literal `$j`, and not
// the value of current loop iteration.
致:
试试这个
<?php
$query = "SELECT title FROM blog";
$result = mysql_query($query);
$rows = mysql_num_rows($result);
for ($j = 0; $j < $rows; ++$j)
{
if (isset($_POST[$j]))
{
$id = mysql_real_escape_string($_POST['id']);
$query = "DELETE FROM blog WHERE id='" .$id ."'";
mysql_query($query);
echo 'Deleted post.. ';
echo '<a href="blog.php">Click here</a>';
}
else
{
echo 'Failed!';
}
}
?>
问题在于,您正在通过$\u POST[0]循环到$\u POST[Whatever],但您只删除ID=$\u POST['ID']的位置。$\u POST['ID']永不更改。即使您在一次又一次地循环,您仍在尝试为每个循环删除同一行。这将不起作用,因为POST或GET或请求仅从上一页中获取发布到当前页的内容
您需要将一些变量发布到某个页面,然后才可以使用$\u POST['j']
。您不能在POST中使用当前页面中的变量
如果您是从其他页面发布j
,那么我认为您可以使用此条件,而不是像那样使用
$j = $_POST['j'];
if(isset($_POST['j'])){
for($j = 0; $j < $rows; ++$j){
//your code
}
}
$j=$\u POST['j'];
如果(isset($_POST['j'])){
对于($j=0;$j<$rows;++$j){
//你的代码
}
}
希望这有帮助请不要使用
mysql\u*
函数,它已弃用(请参阅),易受sql注入的影响。请使用或。@Tom,一旦你被锁定并锁定后重新安装所有内容,你就会这样做。@Theblatone我正在将代码转换为MySQLi。:)即使这样也不行。。我得到了“失败”的行数。
$j = $_POST['j'];
if(isset($_POST['j'])){
for($j = 0; $j < $rows; ++$j){
//your code
}
}