更新mysql行无法正常工作(PDO)

时间:2015-12-09 09:37:28

标签: php mysql pdo

我要做的是更新mysql行(在本例中,只是用户名),就像phpMyAdmin处理它一样(点击输入字段,更改值,按回车键)。

据我所知,我的代码中没有错误。提交后我也没有看到任何php错误。

以下是主页的代码:

// Here, I select the rows I need to be displayed first.

<?php $q="SELECT gebruikersnaam,wachtwoord,id FROM login WHERE rollen !=1 AND rollen !=2" ; $stmt=$ conn->prepare( $q ); $stmt->execute(); ?> // Table to show the rows
<div id="box">
  <!-- Table -->
  <center>
    <table>
      <thead>
        <tr>
          <th style='color:#e20363;'>ID
            <br>
          </th>
          <th>Gebruikersnaam
            <br>
          </th>
          <th>Wachtwoord
            <br>
          </th>
          <th>Actie
            <br>
          </th>

        </tr>
      </thead>
      <tbody>
</div>

<?php while($row=$ stmt->fetch()){ $id=$row['id']; echo "
<tr>"; echo "
  <td style='color:#e20363; text-align:center;'>{$row['id']}</td>"; // Here, I made the input field show the mysql row and made a form to submit when I press enter echo "
  <form action='update.php' method='post'>"; echo "
    <td>
      <input type='text' value='{$row[' gebruikersnaam ']}' name='gebruikersnaam'>
    </td>"; echo "</form>"; echo "
  <td style='text-align:center; padding:10px;'>
    <input type='text' value='{$row[' wachtwoord ']}' name='password'>
  </td>"; echo '
  <center>
    <td>
      <a href="delete.php?id='.$row['id'].'">
        <img id="remove_user" src="images/remove.png" width="60px" style="padding:13px;">
      </a>
    </td>
  </center>'; echo "</tr>"; } ?>
</tbody>
</table>

用户单击“提交”后,update.php会尝试处理更新查询。 这是我的update.php代码:

<?php
if(isset($_POST['username'])){



$host = 'localhost';
$user = 'root';
$pass = 'root';
$database = 'users';
$pdo = new PDO("mysql:host=$host;dbname=$database", $user, $pass);



$sql = "UPDATE `login` SET `gebruikersnaam` = :username";
 
//Prepare our UPDATE SQL statement.
$statement = $pdo-> prepare($sql);
 
//Bind our value to the parameter :id.
$statement->bindValue(':username', $_POST['username']);
  
//Execute our UPDATE statement.
$update = $statement->execute();

if($update){
header('Location: account_verwijderen.php'); 
}
};
?>

一切似乎都很好。但是当我尝试更新查询时(按回车键,它确实将我发送到update.php,但似乎什么也没做,因为我的重定向代码到主页面不起作用。

我在这里做错了什么?

1 个答案:

答案 0 :(得分:1)

您的问题可能是您绑定':username'但应该绑定'username' - 您不需要绑定语句中的冒号。

您也应该定义绑定的日期类型:

bindValue('id', $id, PDO::PARAM_INT);

尝试在if (success) { bit that fires die(PDOStatement->errorInfo());之后添加其他内容,您会在SQL语法中看到任何错误。在你上线之前删除它或添加到文件记录中。

另外

更新查询中没有'where'语句,因此需要:

UPDATE `login` SET `gebruikersnaam` = :username where id = :id;

这意味着您还需要从POST捕获登录ID。没有它,查询将更新表中的所有记录。