gpt4 book ai didi

php - 如何在 php 中将数组值作为键值对插入到数据库表中

转载 作者:行者123 更新时间:2023-12-01 09:41:37 24 4
gpt4 key购买 nike

我正在使用数组将数据插入到表调用 z_error_log。这些插入的数据在“数据”列下的表格中为我提供了如下输出。

(user_role,email,nic,password,payment,reg_date)=(2,dfghjkbhjn@gmail.com,123456789045,$2y$10$R4MOTLHlhe1M9GCt0utxQO3d43oFrH.34ivCPPtHpral.cM/kW5sq,0,2020-01-13 14:44:27)

但我真正需要做的是,将这些数据插入到它存储的表中,如下所示。

user_role = 2,email=dfghjkbhjn@gmail.com,nic=123456789045,password=$2y$10$R4MOTLHlhe1M9GCt0utxQO3d43oFrH.34ivCPPtHpral.cM/kW5sq,payment,reg_date=2020-01-13 14:44:27

我需要像上面一样在其名称之后分配值。

在这里,我在 Log_model.php 文件中添加类 Vendor_cont 和函数的部分,用于将数据输入到 z_error_log 表中。

================Vendor_cont.php====================

class Vendor_cont
{

//CLASS Content

}
}

// ===================EDITED If Recaptcha Fail=====================================

else {

$userData = array(
'user_role'=>'2',
'email' => $email,
'nic' => $nic,
'password' =>$password,
'payment' =>0,
'reg_date' =>date('Y-m-d H:i:s')
);

$_SESSION['Emessages'] = 'Recaptcha Failed. Please try again later';

$this->LModel->createErrorLog(3,'Vendor_cont/register_vendor/recaptcha_fail',$email,$userData);


}

//========================================================================================

}

==================Log_model.php==================

    public function createErrorLog($user,$function,$error_data,$data_obj){ 

$ip=$_SERVER['REMOTE_ADDR'];
$browser_os= $_SERVER['HTTP_USER_AGENT'];

$data= (array) $data_obj;

// print_r($data);

if (is_array($data)) {
$val = '(' . implode(',', array_keys($data)) . ')';
$val .= '=(' . implode(',', $data) . ')';
} else {
$val = $data;
}


// =============EDITED==============

$oStmt= $this->oDb->prepare('INSERT INTO z_error_log (`function`, `error_data`,`data`,`user` ,`ip`,`browser_os`) VALUES (:function,:error_data,:data,:user,:ip,:browser_os)');
$oStmt->bindParam(':function', $function, \PDO::PARAM_STR);
$oStmt->bindParam(':error_data', $error_data, \PDO::PARAM_STR);
$oStmt->bindParam(':data', $val, \PDO::PARAM_STR);
$oStmt->bindParam(':user', $user, \PDO::PARAM_INT);
$oStmt->bindParam(':ip', $ip, \PDO::PARAM_STR);
$oStmt->bindParam(':browser_os', $browser_os, \PDO::PARAM_STR);
$oStmt->execute();

return $this->oDb->lastInsertId();

}

非常感谢您的帮助。提前致谢。

最佳答案

请使用以下代码修改您的 createErrorLog() 函数。我希望你能通过使用它得到你想要的输出。

$email = "test@gmail.com";
$nic ="nic";
$password ="Pass@123";

$userData = array(
'user_role'=>'2',
'email' => $email,
'nic' => $nic,
'password' =>$password,
'payment' =>0,
'reg_date' =>date('Y-m-d H:i:s')
);
foreach($userData as $key=>$val) {
$finalValue .= $key.'='.$val.',';
}
echo rtrim($finalValue,",");

用下面的代码替换模型文件中的 createErrorLog() 函数就完成了。记住在数据库中创建文本类型的数据列并将值作为字符串传递。

public function createErrorLog($user,$function,$error_data,$data_obj){ 
$ip=$_SERVER['REMOTE_ADDR'];
$browser_os= $_SERVER['HTTP_USER_AGENT'];
$data= (array) $data_obj;

foreach($data as $key=>$val) {
$finalValue .= $key.'='.$val.',';
}
$val = rtrim($finalValue,",");

// =============EDITED==============
$oStmt= $this->oDb->prepare('INSERT INTO z_error_log (`function`, `error_data`,`data`,`user` ,`ip`,`browser_os`) VALUES (:function,:error_data,:data,:user,:ip,:browser_os)');
$oStmt->bindParam(':function', $function, \PDO::PARAM_STR);
$oStmt->bindParam(':error_data', $error_data, \PDO::PARAM_STR);
$oStmt->bindParam(':data', $val, \PDO::PARAM_STR);
$oStmt->bindParam(':user', $user, \PDO::PARAM_INT);
$oStmt->bindParam(':ip', $ip, \PDO::PARAM_STR);
$oStmt->bindParam(':browser_os', $browser_os, \PDO::PARAM_STR);
$oStmt->execute();
return $this->oDb->lastInsertId();
}

关于php - 如何在 php 中将数组值作为键值对插入到数据库表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59714433/

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