gpt4 book ai didi

php - 在 php 中使用 PDO bindValue 插入

转载 作者:行者123 更新时间:2023-11-29 22:54:45 25 4
gpt4 key购买 nike

我正在尝试使用 PDO bindValue,但它在我这边不起作用。

 public static function insert($tableName, $columnValues = array()) {
$columns = array_keys ( $columnValues );
$columns = '`' . implode ( '`,`', $columns ) . '`';
$values = null;
$x = 1;
$y = 1;
foreach ( $columnValues as $value ) {
$values .= '?';
if ($x < count ( $columnValues )) {
$values .= ',';
}
$x ++;
}
$sql = "INSERT INTO {$tableName} ($columns) VALUES($values)" . '</br>';
if ($sqlString = DatabaseConnection::getConnectionInstance ()->pdo->prepare ( $sql )) {
foreach ( $columnValues as $value ) {
$sqlString->bindValue ( $y, $value );
$y ++;
}
if ($sqlString->execute ()) {
echo 'executed';
}
}

return false;
}

最佳答案

我已修改您的函数以使用惰性绑定(bind),请参阅 PDO info 。注意你的 implode() 不太正确。我添加了 echo 来显示结果,您应该在测试后将其删除。

public static function insert($tableName, $columnValues = array()) {
$columns = array_keys( $columnValues );
$params = array_values( $columnValues );// Array to hold values for lazy binding
$columns = '`' . implode ("`,`", $columns ) . '`';
$values = null;
$x = 1;/*
$y = 1;*/
foreach ( $columnValues as $value ) {
$values .= '?';
if ($x < count ( $columnValues )) {
$values .= ',';
}
$x ++;
}
$sql = "INSERT INTO {$tableName} ($columns) VALUES($values)" . '</br>';
if ($sqlString = DatabaseConnection::getConnectionInstance ()->pdo->prepare ( $sql )) {
echo $sql;//For Testing
echo "<br>";//For Testing
var_dump($params);//For Testing
if ($sqlString->execute ($params)) {
echo 'executed';
}
}

return false;
}

该函数产生

INSERT INTO test (`Peter`,`Ben`,`Joe`) VALUES(?,?,?)

array(3) { [0]=> int(35) [1]=> int(37) [2]=> int(43) }

来自

$columnValues =  array("Peter"=>35, "Ben"=>37, "Joe"=>43);
$tableName ="test";
insert($tableName, $columnValues)

关于php - 在 php 中使用 PDO bindValue 插入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28758955/

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