【问题标题】:Multi checkbox post proplem多复选框帖子问题
【发布时间】:2013-11-21 08:41:38
【问题描述】:

我想检查相同的现有数据库,但 $check 不起作用。怎么了我找不到。 我在发布时出现此错误;

error 1-Members not added :(
Mysql error:You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''459' at line 1
error 2- 459 memb_id already in databese, try again! 

这是我的代码:

<?php
    $row_data = array();
foreach($_POST['checkbox'] as $row=>$Name) {
$name=mysql_real_escape_string($Name);
$memb_id=mysql_real_escape_string($_POST['memb_id'][$row]);
$memb_srnm=mysql_real_escape_string($_POST['memb_srnm'][$row]); 
$kur_id=mysql_real_escape_string($_POST['kur_id'][$row]);

    $row_data = array("'$memb_id'", "'$memb_srnm'", "'$kur_id'");
}


if (!empty($row_data)) {
$check = mysql_query("SELECT * FROM basvurular WHERE memb_id='$memb_id");
if (mysql_affected_rows()  ){
                 echo '<h4 class="alert_error"><strong>'.ss($memb_id).'</strong>  already in databese, try again! </h4>';
                 header('Location: index.php');

        } else {

            $query = 'INSERT INTO basvurular (memb_id, memb_srnm, basvur_kurid) VALUES (' .implode(',', $row_data) . ')';
        }


if (mysql_query($query)){

    echo '<h4 class="alert_success"> <label style="color: blue; font-size: 26px; font-weight: bold;"><img style="width: 4%" src="images/pers2.png" alt=""/>-'.mysql_affected_rows().'- </label> Succesfull  :)  </h4>';
    header('Location: index.php');          


}else{
    echo '<h4 class="alert_error">Members not added :( <br> Mysql Error:'.mysql_error().'</h4>';

    return false;}
}


?>
    <article  class="module width_3_quarter" style="padding-bottom: 10px; width: 95%">
    <header>
        <div style="float:right;font-size:14px;font-weight: bold; padding:10px"></div>

        <h3 class="tabs_involved">POST SELECTED</h3>
    </header>
    <div class="tab_container">


    <?php


$query = query("SELECT * FROM members  INNER JOIN kurumlar ON kurumlar.kur_id = members.kur_id WHERE kurumlar.kur_id=' ".$_SESSION["kur_id"]." ' && ceza=0 ORDER BY memb_id DESC");
if (mysql_affected_rows()){
?>

<div id="tab1" class="tab_content">
<?php echo '<form action="" method="post" name="frm" onsubmit="return check">
<table class="tablesorter" cellspacing="0"> '; ?>
<thead> 
    <tr>
         <th><a style="text-decoration: none;font-size:14px;font-weight: bold; color: blue" href="javascript:void(0);" id="link" onclick="slct()">All Select</a></th>
        <th align= "left" >ID Number</th> <th></th> 
        <th align= "left" >USER NAME</th><label style="padding-right: 10px;padding-bottom: 10px;float:right " ><input style="color: red" type="submit" name="post" value="Selected Post"></label>

         <th></th> 
        <th></th> 
    </tr> 
</thead> 
<tbody> 
    <?php

    while ($row = row($query)){
     ?>

             <tr>

         <td><input type="checkbox" name="checkbox[]"  id="checkbox[]" ></td>
                <td><?php echo ss($row["membName"]);?></td><td><input name="memb_id[]" type="hidden"  value="<?php echo ss($row["memb_id"]);?>"></td>
                <td><?php echo ss($row["memb_srnm"]);?></td><td><input name="memb_srnm[]" type="hidden" value="<?php echo ss($row["memb_srnm"]);?>"></td>
                <td><input name="kur_id[]" type="hidden" value="<?php echo ss($_SESSION["kur_id"]);?>"></td>            
            </tr> 
                <?php }?>
        </tbody>    

        <?php echo '</table></form>'; ?>


        </div>
        <?php }else{ ?>
            <h4 class="alert_warning">Nobody Here :(( </h4>
        <?php }?>
    </div>

    </article>

【问题讨论】:

  • @Daedalus 可以,mysql会自动转换。
  • 因此,至少,您的查询格式不正确。您是否尝试过修复它或找到导致问题的数据丢失。此外,不是这个问题的一部分,但您确实意识到您的 header() 重定向将无法正常工作?您不能将输出发送到浏览器然后尝试重定向。
  • @Barmar 我的错,那么。
  • 只是几个cmets:您意识到foreach循环每次都会重置循环内的变量,并且之前的迭代不会以任何方式存储?接下来,你先做一个回显,然后使用header(),这是行不通的。对于您得到的错误,您似乎正在尝试添加一个已经使用的memb_id,这可能是一个UNIQUE 索引? SELECT 查询之后的 if 语句可能有错误的行为,因为它通常意味着不同的东西。

标签: php mysql checkbox


【解决方案1】:

您在此行缺少引用:

$check = mysql_query("SELECT * FROM basvurular WHERE memb_id='$memb_id'");

另外,要检查SELECT 查询是否返回任何行,您应该使用mysql_num_rows(),而不是mysql_affected_rows()——后者仅适用于修改表的查询。

您还应该检查查询是否成功:

$check = mysql_query("SELECT * FROM basvurular WHERE memb_id='$memb_id")
    or die(mysql_error());

【讨论】:

  • Barmar,我修复了但同样的错误:459 memb_id 已经在数据库中,再试一次!
  • 您需要检查来自mysql_query() 的错误。你这样做是为了$query,但不是为了$check
  • 我这样改代码; if (mysql_num_rows($check) > 0 ){ echo '

    '.ss($memb_id).' 已经在数据库中,再试一次!

    '; header('位置:index.php'); } else { $query = 'INSERT INTO basvurular (memb_id, memb_srnm, basvur_kurid) VALUES ('.implode(',', $row_data) .')'; } 再次相同的错误> 459 memb_id 已经在数据库中,再试一次!
  • 我尝试其他成员的帖子,但同样错误。
  • 我看不懂您写的内容,您应该将其添加到您的问题中,并尝试将其格式化为可读的格式,并带有适当的缩进。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-18
  • 2016-01-08
相关资源
最近更新 更多