php - INSERT 中的 bindValue 不起作用

标签 php mysql

我的代码-

$con = new PDO ('mysql:host=localhost;dbname=air','root','123456');
    $con->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    $fields = implode(", ", $fields);
    echo $fields;
    $values = implode("','", $values);
    echo $values;

    // have to make this prevent sql injection //
    // it wont work if i added bindValue why? //
    $stmt = $con->prepare("INSERT INTO $table(ID, $fields) VALUES (?, ?)");
    $stmt->bindValue(1,'',PDO::PARAM_STR);
    $stmt->bindValue(2,$values,PDO::PARAM_STR);
    $stmt->execute();

    //if I remove `bindValue` and replace this it will insert //
    $stmt = $con->prepare("INSERT INTO $table(ID, $fields) VALUES ('', $values)");

为什么在我添加 bindValue 之后,我的插入不再起作用,但是当我使用普通的 sql 时,它会起作用,我的 bindValue 出了什么问题> 和 VALUES (?,?) ,谁能帮我看看??

最佳答案

我来晚了,但是一个简单方便的函数可以使用任何搜索答案的人来实现对任何表和字段的绑定(bind)和插入。还没有包括 PDO::PARAM_STR 作为它的默认值,我看到你的字段都是 string 值。希望这会有所帮助:)

//get array containing fields and its values to be added $fv_array
$fv_array=array(
"field_one_name"=>$field_one_value,
"field_two_name"=>$field_two_value,
"field_three_name"=>$field_three_value
);

$con=new PDO ('mysql:host=localhost;dbname=air','root','123456');
$con->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
$fv="";
 //create string like :field_one_name,:field_two_name,:field_three_name,
foreach($fv_array as $field=>$value {$fv.=":".$field.",";}
//rtrim removes trailing comma
$statement=$con->prepare("INSERT INTO ".$table." (".implode(",",array_keys($fv_array)).") VALUES (".rtrim($fv, ",").")");
//bind values
foreach($fv_array as $field=>$value){$statement->bindValue(':'.$field,$value);}
$statement->execute();

关于php - INSERT 中的 bindValue 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30010577/

相关文章:

php - 使用 PHP 的 POST CURL 请求获取错误 'No authorization header passed' - envato api

php - 网站 - 连接到 MySQL 数据库

mysql - SQL 查询没有返回任何值

php - 如何使用 php 将从下拉列表中选择的日期插入到 mySQL 表中?

mysql - Rails 3 和 ruby​​ 1.8.7 使用什么 latin1 或 utf8

php - 将 unix 时间戳存储为无符号整数会有什么好处吗?

php - 如何构造 MySQL 数据库以在父目录类型结构下显示 PHP 中的链接记录?

php - Internet Explorer 回显重复的 mysql 结果?

PHP:一致地识别本地服务器

Ubuntu 10.04 中的 Python、MySQL 和守护进程问题