Php 如何在关联数组中指定变量、在循环中获取值以及在数据库中插入

Php 如何在关联数组中指定变量、在循环中获取值以及在数据库中插入,php,mysql,wordpress,Php,Mysql,Wordpress,代码将数据插入数据库。我在用变量替换其中一个数组值时遇到问题,即我想指定$fac_id作为值,而不是从输入字段获取值。当我执行代码时,db中的值是空的,但是当我回显$fac_id时,我会得到一个登录用户的值,比如7 实际上,您根本没有在数据库中插入$fac_id。$fields数组的作用是确定每个插入使用哪个$\u POST值 因此,如果将$fields['3']设置为7,则它将尝试使用该值运行$inputvalue=$\u POST[$inputValueKey][$i]——例如,如果$i为0

代码将数据插入数据库。我在用变量替换其中一个数组值时遇到问题,即我想指定$fac_id作为值,而不是从输入字段获取值。当我执行代码时,db中的值是空的,但是当我回显$fac_id时,我会得到一个登录用户的值,比如7


实际上,您根本没有在数据库中插入$fac_id。$fields数组的作用是确定每个插入使用哪个$\u POST值

因此,如果将$fields['3']设置为7,则它将尝试使用该值运行$inputvalue=$\u POST[$inputValueKey][$i]——例如,如果$i为0,则它将尝试从$inputvalue=$\u POST[7][0]读取

然而

a我怀疑您是否有名为7的$u POST字段,以及

b它并没有删除从用户输入中读取的过程,尽管它使它读取一个可能不存在的值

我怀疑下面的方法会起作用——当您希望它从固定服务器端值而不是用户输入读取时,您可能需要一个特殊情况。注意$fields[3]的硬编码条目以及$inputvalue=行上的三元运算符,以实现特殊情况。另外,不需要用相同的值重复地重新定义$fields,所以我将其移出了循环

$current_user = wp_get_current_user();
$fac_id = get_current_user_id();
$fields = [
      1 => 'shifttype',
      2 => 'shiftstype',
      3 => 'userID',
      4 => 'cvd',
      7 => 'facname',
      8 => 'facadd',
];

for ($i = 0; $i < count($_POST["service"]); $i++) {

    foreach ($fields as $formInputId => $inputValueKey) {
        $d_id = '';
        $appointmentid = $insertId;
        $customerid = $custs->id;
        $forminputid = $formInputId;
        $inputvalue = ($inputValueKey == "userID" ? $fac_id : $_POST[$inputValueKey][$i]);
        $inputfilename = 'NULL';

另外,如评论中所述,您还应该紧急修复代码中的SQL注入漏洞。

您是否尝试过调试这些值?我们无法运行此代码对其进行测试,您需要为我们提供调试详细信息。请去掉“$fac_id”的引号和连接。警告:您完全可以使用参数化的预处理语句,而不是手动生成查询。它们由或提供。永远不要相信任何形式的输入!即使您的查询仅由受信任的用户执行。实际上,您根本没有在数据库中插入$fac_id。$fields数组的作用是确定每个插入使用哪个$\u POST值。因此,如果将$fields['3']设置为7,则它将尝试使用该值运行$inputvalue=$\u POST[$inputValueKey][$i]——例如,如果$i为0,则它将尝试从$inputvalue=$\u POST[7][0]读取。所以a我怀疑你有一个名为7的$u POST字段,b它没有删除从用户输入读取的过程。这真的应该给你一个未定义的偏移通知。是否已打开错误报告?开发时是否检查错误日志或显示错误?
$current_user = wp_get_current_user();
$fac_id = get_current_user_id();
$fields = [
      1 => 'shifttype',
      2 => 'shiftstype',
      3 => 'userID',
      4 => 'cvd',
      7 => 'facname',
      8 => 'facadd',
];

for ($i = 0; $i < count($_POST["service"]); $i++) {

    foreach ($fields as $formInputId => $inputValueKey) {
        $d_id = '';
        $appointmentid = $insertId;
        $customerid = $custs->id;
        $forminputid = $formInputId;
        $inputvalue = ($inputValueKey == "userID" ? $fac_id : $_POST[$inputValueKey][$i]);
        $inputfilename = 'NULL';