gpt4 book ai didi

php - 由于数组数据类型错误,无法插入 mysql 表

转载 作者:行者123 更新时间:2023-11-29 17:37:09 26 4
gpt4 key购买 nike

下面是从中检索数据并尝试插入到 mysql 表中的数组,但是当要插入多于 1 行时工作正常,而当只插入 1 行时失败。

// The structure of the array is as follows
Array
(
[Row] => Array
(
[0] => Array
(
[PIN] => 1274
[DateTime] => 2018-04-07 09:28:16
[Verified] => 15
[Status] => 3
[WorkCode] => 0
)

[1] => Array
(
[PIN] => 157
[DateTime] => 2018-04-07 10:22:56
[Verified] => 15
[Status] => 3
[WorkCode] => 0
)
// these are the raw punch data from biometric machine

以下是当前正在使用的代码段。

  if(isset($array_att_logs) && isset($array_att_logs['Row'])) {     
foreach ($array_att_logs['Row'] as $value) {
$emp_code = $value['PIN']; // line 92 $dateNTime = $value['DateTime']; //line 93

$punch_query = "INSERT IGNORE INTO punching_data_table (emp_code, date_time,in_out_status) VALUES ('$emp_code', '$dateNTime','$in_out_status')";

$punch_result = mysql_query($punch_query);
echo mysql_error();
}
} echo var_dump($array_att_logs);

请注意,$in_out_status 是在其他地方显式定义的,这似乎根本没有任何问题。我已经使用 var_dump() 检查了数组是否存在且数据正常。问题是,如果要插入表中的单行,则会显示以下错误。

Warning: Illegal string offset 'PIN' in /home1/.../punch-raw.php on line 92
Warning: Illegal string offset 'DateTime' in /home1/..../punch-raw.php on line 93

如果要插入表中的行数超过 1 行,那么它就可以正常工作。可能是我错误地定义了 $emp_code$dateNTime

这是只有一行时的样子。

 echo " <pre>"; 
print_r($array_att_logs);
echo "/<pre>";

Array
(
[Row] => Array
(
[PIN] => 406
[DateTime] => 2018-05-06 14:40:09
[Verified] => 1
[Status] => 3
[WorkCode] => 0
)

)
/

using var_dump it looks like below

array(1) { ["Row"]=> array(5) { ["PIN"]=> string(3) "406" ["DateTime"]=> string(19) "2018-05-06 14:40:09" ["Verified"]=> string(1) "1" ["Status"]=> string(1) "3" ["WorkCode"]=> string(1) "0" } }

最佳答案

您遇到问题的原因是 $array_att_logs 的数组结构当只有 1 行时与当有多于一行时是不同的。因此,您需要测试这种情况并更改迭代数组的方式。检查是否只有 1 行的最简单方法是查看 $array_att_logs['Row'] 的内容是否是数组的数组。为此,我们使用 array_values($array_att_logs['Row'])确保我们有一个索引为 0 的条目,然后测试该值以查看它是否是一个数组。然后我们使用该结果来更改 foreach 迭代的值:

$row = array_values($array_att_logs['Row']);
$multirows = is_array($row[0]);
foreach (($multirows ? $array_att_logs['Row'] : $array_att_logs) as $value) {
$emp_code = $value['PIN'];
...

关于php - 由于数组数据类型错误,无法插入 mysql 表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50200209/

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