gpt4 book ai didi

PHP 动态插入函数正在插入重复的行

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

我创建了一个函数,可以动态地将数据插入 MYSQL 数据库,以避免代码重复,就像这样:

function insert($table, $data)
{
// connection
global $db;

if(!is_array($data)) die("Error : second parameter must be an array of keys and values");

$keys = array_keys($data);
$values = array_values($data);

// sql query
$sql = "INSERT INTO `$table` (";

// if more than one column
if(count($data) > 1)
{
for($i = 0; $i < count($data) -1; $i++)
{
$sql .= "`$keys[$i]`, ";
}

$sql .= "`" . end($keys) . "`) VALUES (";

for($i = 0; $i < count($data) -1; $i++)
{
$sql .= ":$keys[$i], ";
}

$sql .=":" . end($keys) . ")";

}else{ // only one column

$sql .= "`$keys[0]`) VALUES(:$keys[0])";
}

// make keys as named placeholders
$binds = array_map(function($elem){
return ":".$elem;
}, $keys);


// combine placeholders with values
$binds = array_combine($binds, $values);


$stmt = $db->prepare($sql);
return $stmt->execute($binds) ? true : false;
}

所以稍后我可以像那样插入数据:

echo insert("users",[
"Name" => "Timino",
"Email" => "admin@timino.io"
]); // result 1 inserted or 0 failed

但是它插入了重复的行??当我调试代码时,一切看起来都很好

echo $sql;  //INSERT INTO `users` (`Name`, `Email`) VALUES (:Name, :Email)
print_r($binds) // Array
(
[:Name] => Timino
[:Email] => admin@timino.io
)

我做错了什么?

注意:我已将代码更新为程序代码,以便每个人都能轻松快速地测试它!

最佳答案

您是否在 index.php 中执行此代码?

echo $db->insert("users",[
"Name" => "Timino",
"Email" => "admin@timino.io"
]); // result 1 inserted or 0 failed

这可能不是代码问题。

我在测试 index.php 中的插入时遇到了类似的问题,并且我的 .htaccess 中有一条规则会将未找到的文件重定向到index.php。当浏览器试图找到您的 favicon 时,它会被重定向到 index.php,它将再次执行代码。

如果是这种情况,您可以尝试将您的代码移动到另一个文件 test.php 并使用 http://localhost/test.php 调用您的域并检查如果它仍在复制。

关于PHP 动态插入函数正在插入重复的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45759708/

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