我要做的是更新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,但似乎什么也没做,因为我的重定向代码到主页面不起作用。
我在这里做错了什么?
答案 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。没有它,查询将更新表中的所有记录。