【问题标题】:update existing row in mysql using php coding使用php编码更新mysql中的现有行
【发布时间】:2013-10-12 06:43:23
【问题描述】:

在我的数据库中,我有 20 多列。我通过输入表单添加了 19 列并成功存储在 db 中。我从主页中的 db 获取几行。在我的主页 1 中还有更多列。即状态列,它是一个组合框类型。如果我单击状态列,它应该显示 4 个值。我想选择其中一个值,然后当我单击保存按钮时,它必须以相同的 ID 存储在 db 中。怎么做?我试过了,但它没有在 mysql db 中更新...

主页组合框编码:

echo "\t<td><form action=statusdb.php method=post>
<select name=update><option value=empty></option><option value=Confirm>Confirm</option><option value=Processing>Processing</option><option value=Pending>Pending</option><option value=Cancelled>Cancelled</option></select>
<input name=\"update[".$a_row['slno']."]\"; type=submit id=id value=Save></form>
</td>\n";

状态数据库编码:

if (isset($_GET['id']))
{ 
$id = mysql_real_escape_string($_GET['id']);
$sql = mysql_query("UPDATE guestdetails SET status = '" . $_POST['update'] ."'");
if(!$sql)
{
    die("Error" .mysql_error());
}
}

帮我怎么做?

【问题讨论】:

    标签: php mysql button save


    【解决方案1】:

    在您的 IF 中应该是 $_POST,而不是 $_GET 另外,需要添加 WHERE 子句,像这样:

    if (isset($_POST['id']))
    { 
      $id = mysql_real_escape_string($_POST['id']);
      $update= mysql_real_escape_string($_POST['update']);
    
      $sql = mysql_query("UPDATE guestdetails SET status = '$update' WHERE id='$id'");
    if(!$sql)
    {
        die("Error" .mysql_error());
    }
    }
    

    另外,您使用了名称 update 两次,一次在 &lt;select&gt; 中一次在 &lt;input&gt; 中,从 &lt;input&gt; 中取出那个名称,将其设为隐藏字段,名称为 id 和您的 slno 行的值:

    echo "\t<td>
      <form action=statusdb.php method=post>
        <select name=update>
          <option value=empty></option>
          <option value=Confirm>Confirm</option>
          <option value=Processing>Processing</option>
          <option value=Pending>Pending</option>
          <option value=Cancelled>Cancelled</option>
        </select>
        <input name='id' type='hidden' value='".$a_row['slno']."';>
        <input type='submit'>Save</button>
      </form>
    </td>\n";
    

    【讨论】:

    • 非常感谢。我得到了它。首先我使用了 where 子句,但在这里我忘记了更新。我只是折叠名称、值 id... 现在好了
    • 听不懂..你告诉我什么?
    • 您可以接受可以帮助您解决问题的答案。另外,您可以投票给答案。
    • 我做到了。但投票需要 15 声望。该怎么办?我是新手。如何获得声望?
    【解决方案2】:

    尝试如下:

    <form action="statusdb.php" method="post">
    <?php
    while($a_row = mysql_fetch_array($sql)) {
        $sl_no = $a_row['slno'];
        echo '<select name="update['.$sl_no.']"><option value=empty></option><option value=Confirm>Confirm</option><option value=Processing>Processing</option><option value=Pending>Pending</option><option value=Cancelled>Cancelled</option></select> '; 
        echo '<input type="hidden" name="sl_no[]" value="'.$sl_no.'" />'; 
    } 
    ?>
    <input name="update_rows" type="submit" value="Save">
    </form>
    
    <?php
    if(isset($_POST['update_rows'])) {
        $nums = $_POST['sl_no'];
        $update = $_POST['update'];
        foreach($nums as $sl) {
            $sl_no = $sl;
            $val = $update[$sl_no];
            $sql_update = mysql_query("UPDATE guestdetails SET status = '$val' WHERE sl_no='$sl_no'");
        }
    }
    ?>
    

    【讨论】:

      【解决方案3】:

      您没有向status db 提交任何id

      【讨论】:

      • 我正在提交 if(isset($_GET['id'])) & 在我的表单标签提交按钮代码中我提到它 id=id.. 我是对还是错?
      • 但是您的html 表单没有名称为id 的元素,因此当您提交表单时isset($_GET['id']) 将始终生成false bool,并且脚本不会进一步执行.另一件事是您的表单有一个method = 'post',但您正在发送一个get 请求。此外,您的sql 查询将更新所有行的status。你需要像UPDATE guestdetails SET status = &lt;your status&gt; WHERE id = &lt;your id&gt; 这样的东西,在这里你基本上是通过指定idid 必须是有效的行名)来选择单行。
      • 试试这个echo "\t&lt;td&gt;&lt;form action=statusdb.php method=post&gt; &lt;select name=update&gt;&lt;option value=empty&gt;&lt;/option&gt;&lt;option value=Confirm&gt;Confirm&lt;/option&gt;&lt;option value=Processing&gt;Processing&lt;/option&gt;&lt;option value=Pending&gt;Pending&lt;/option&gt;&lt;option value=Cancelled&gt;Cancelled&lt;/option&gt;&lt;/select&gt; &lt;input name='id' type=submit value =".$a_row['slno']."&gt;&lt;/form&gt; &lt;/td&gt;\n";
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-07
      • 2015-12-11
      • 1970-01-01
      • 1970-01-01
      • 2021-09-15
      相关资源
      最近更新 更多