【发布时间】:2021-05-19 12:08:02
【问题描述】:
代码将数据插入数据库。我在用变量替换数组值之一时遇到问题,即我想将 $fac_id 指定为值,而不是从输入字段中获取值。当我执行代码时,db 中的值为空,但是当我回显$fac_id 时,我得到了登录用户的值,例如7。
$current_user = wp_get_current_user();
$fac_id = get_current_user_id();
for ($i = 0; $i < count($_POST["service"]); $i++) {
$fields = [
1 => 'shifttype',
2 => 'shiftstype',
3 => ''.$fac_id.'',
4 => 'cvd',
7 => 'facname',
8 => 'facadd',
];
foreach ($fields as $formInputId => $inputValueKey) {
$d_id = '';
$appointmentid = $insertId;
$customerid = $custs->id;
$forminputid = $formInputId;
$inputvalue = $_POST[$inputValueKey][$i];
$inputfilename = 'NULL';
$insert_cust = "INSERT INTO wp_appointment_custom_data (id, appointment_id, customer_id, form_input_id, input_value, input_file_name) VALUES ('$d_id', '$appointmentid', '$customerid', '$forminputid', '$inputvalue', '$inputfilename')";
$query_run = mysqli_query ($que_cust, $insert_cust);
}
}
【问题讨论】:
-
您是否尝试过调试这些值?我们无法运行此代码进行测试,您需要为我们提供调试详细信息。
-
去掉''.$fac_id.''的引号和连接
-
警告:您对SQL Injections 持开放态度,应该使用参数化的prepared statements,而不是手动构建查询。它们由PDO 或MySQLi 提供。永远不要相信任何形式的输入!即使您的查询仅由受信任的用户执行,you are still in risk of corrupting your data。 Escaping is not enough!
-
您实际上根本没有将
$fac_id插入到数据库中。您的$fields数组所做的是确定每个插入使用哪个$_POST值。因此,如果您将$fields['3']设置为7,那么它将尝试使用该值运行$inputvalue = $_POST[$inputValueKey][$i]- 例如如果$i是0,那么它将尝试从$inputvalue = $_POST[7][0]读取。所以 a) 我怀疑你有一个名为 7 的 $_POST 字段,并且 b) 它没有删除从用户输入中读取的过程。 -
这真的应该给你一个“未定义的偏移量”通知。您是否打开了错误报告?您在开发时是否检查错误日志或显示错误?