作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用以下代码保存一些代码。我有一个对象,其中的变量与表行的名称相同,因此我可以创建一个像这样的插入:
$query = "INSERT INTO table ";
$columns = '(';
$values = 'VALUES (';
foreach ($this as $var => $value){
if ($value){
$columns .= $var.', ';
if (!is_int($value))
$value = '\''.$value.'\'';
$values .= $value.', ';
}
}
$columns .= ')';
$values .= ')';
$columns = str_replace (', )', ')', $columns);
$values = str_replace (', )', ')', $values);
$query .= $columns." ".$values;
但是每个单独的变量都被检测为字符串,并且并非如您想象的那样在所有字段中都是如此。
有没有人有解决办法?
最佳答案
我会这样写:
<?php
$canonical_columns = array_flip(array("column1", "column2", "column3"));
$columns = array_keys(array_intersect_key($canonical_columns, (array) $this));
$params = join(",", array_fill(0, count($columns), "?"));
$columns = join(",", $columns);
$query = "INSERT INTO table ($columns) VALUES ($params)";
$stmt = $pdo->prepare($query);
$stmt->execute(array_values($this));
停止连接字符串片段以形成 SQL。
使用 PDO,并使用参数作为值。
通过将输入与已知的有效列名称进行比较来将列名称列入许可名单。
关于php - 如何从 'really' 检测数据库中的整数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6751816/
我是一名优秀的程序员,十分优秀!