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

标签 php mysql sql pdo

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

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

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/

相关文章:

php - 从 d/base 填充下拉列表然后用于 ajax 检索

javascript - 在另一个页面中打印ajax结果而不刷新页面

PHP 连接失败 : SQLSTATE[HY000] [2002] Connection refused

mysql - SQL 从最近的日期提取多个月的数据

sql - Yii2:如何将带有子查询的查询转换为事件记录?

sql - 在 SQL 中选择 CHAR 而不是 VARCHAR 的用例有哪些?

php插入数据库失败

php - 制作两个表取决于它们是否有 0 或 1

php - 分解数据库字符串并将值与php中的另一个字符串进行比较

PHP在多个循环中获取总数