gpt4 book ai didi

php - PDO mysqli 查询,制作一个管理页面,可能需要一个变量列名

转载 作者:行者123 更新时间:2023-11-29 04:45:06 24 4
gpt4 key购买 nike

我已经开始制作一个管理页面,并希望有一个表单来编辑数据库中的数据,动态呈现数据供用户编辑。

但是当用户选择他们想要的列时,我收到一个错误。我可以对列名称进行硬编码,如果它们在数据库中发生变化,那么我将在脚本中进行更改,但最好让它自动更新,这样我就不必这样做了。任何帮助将不胜感激。

HTML

     <form action="" method="POST">
<label>Customer to edit
<select name="id" >
<option value="1">person1</option>
<option value="2">person2</option>
<?php // will get data dynamically ?>
</select>
</label><br/>
<label> Column to change
<select name="column">
<option value="firstname">firstname</option>
<option value="lastname">lastname</option>
</select>
</label><br/>
<label> Value to replace
<input type="text" name="value"></input>
</label><br/>
<input name="submit" type="submit" value="Edit"/>
</form>

PHP

if(isset($_POST['submit'])){
$stmt = $conn->prepare('UPDATE booking SET :columname = :value WHERE id = :id');
$stmt->execute(array(
':columnname' => $_POST['column'],
':id' => $_POST['id'],
':value' => $_POST['value']
));
}

错误是:

Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[HY093]: 
Invalid parameter number: parameter was not defined' in C:\xampp\htdocs\CDEC 2013\admin.php:154 Stack trace: #0 C:\xampp\htdocs\CDEC 2013\admin.php(154): PDOStatement->execute(Array) #1 {main} thrown in C:\xampp\htdocs\CDEC 2013\admin.php on line 154

line154':value' => $_POST['value']

最佳答案

您不能使用参数来指定数据库对象(即表、列)的名称。您将需要手动将字段名称连接到您为准备好的语句形成的 SQL 中。确保对该值进行转义,因为它不会被参数化。

当您考虑准备好的语句如何工作时,这是有道理的,因为数据库在不知道可能涉及哪些表和/或字段时无法准备执行计划。

关于php - PDO mysqli 查询,制作一个管理页面,可能需要一个变量列名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20381084/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com