【问题标题】:Modify a mysql record from PDO query results using php submit button使用 php 提交按钮从 PDO 查询结果修改 mysql 记录
【发布时间】:2017-06-04 09:36:43
【问题描述】:

我有一个显示查询结果的 php 页面。我希望能够从该结果页面更改特定列。

echo "<table>
  <tr>
    <th>First</th>
    <th>Last</th>
    <th>Time</th>
    <th>Reason</th>
    <th>Status</th>
    <th>Update</th>
  </tr>";

// displaying data from database mysql using foreach loop

foreach ($pdoResult as $row)
{  
  echo"<tr>
    <td><p>$row[1]</p></td>
    <td><p>$row[2]</p></td>
    <td><p>$row[4]</p></td>
    <td><p>$row[5]</p></td>
    <td>
      <form action='update.php' method = 'post'>
        <select name='$row[0]'>
          <option name= 'status' value='$row[6]'>$row[6]</option>
          <option name= 'status' value='seen Benson'>seen Benson</option>
          <option name= 'status' value='seen cooper'>seen Cooper</option>
          <option name= 'status' value='seen Sheen'>seen Sheen</option>
          <option name= 'status' value='seen Wilks'>seen Wilks</option>
          <option name= 'status' value='not seen'>not seen</option>
        </select>
    </td>
    <td>
        <input type='submit' name='$row[0]' value='update'>
      </form> 
    </td>
  </tr>";   
}
echo "</table>";

更新提交按钮不起作用。

如何对提交按钮进行编码以识别特定查询结果的唯一 ID,然后更改“状态”并在 mysql 数据库中更新它?

【问题讨论】:

  • “更新提交按钮不起作用”是什么意思?为什么你将&lt;select&gt;&lt;input&gt; 命名为同一个东西?
  • 你根本没有显示你的更新代码,所以很难判断哪里出了问题。
  • 另外,&lt;form&gt; 不能是 &lt;table&gt; 的子级,因此应该修复。
  • 也没有php/mysql支持这个问题。
  • 寻求调试帮助的问题(“为什么这段代码不起作用?”)必须包括所需的行为、特定的问题或错误以及重现它所需的最短代码在问题本身。没有明确的问题陈述的问题对其他读者没有用处。请参阅:How to create a Minimal, Complete, and Verifiable example

标签: php mysql pdo sql-update


【解决方案1】:

check this 我认为您想使用唯一 id 来显示文本或输入字段中的特定行,而不是想在数据库中更新它们。在这里,我只是给了您正常的 id 示例。 如果您想添加唯一 id 以显示结果并更新它们,则必须将 id 修改为 uni:

class user{
public uid='';
public function __construct($data=''){
if(array_key_exist('uid',$data)){
this->uid=$data['uid'];
}
}

public function update(){

    try {
        $pdo = new PDO('mysql:host=localhost;dbname=db', 'root', '');
        $query = "UPDATE `users` SET user_name = :u_name WHERE uid="."'".$this->uid."'";

        $stmt = $pdo->prepare($query);
        $stmt->execute(array(

            ':u_name' => $this->user_name

        ));

    } catch(PDOException $e) {
        echo 'Error: ' . $e->getMessage();
    }
}

在我写的“...uid=”之后

$query = "UPDATE `users` SET user_name = :name WHERE uid="."'".$this->uid."'";

因为我在 varchar 中设置了 uid 的类型,所以我将其保留为 ("'".$this->uid."'") this。所以我希望你得到你的答案并尝试这个并给出反馈。谢谢。

【讨论】:

    猜你喜欢
    • 2016-10-06
    • 2017-12-24
    • 2015-01-29
    • 2015-05-31
    • 1970-01-01
    • 2010-11-25
    • 1970-01-01
    • 1970-01-01
    • 2020-09-17
    相关资源
    最近更新 更多