Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/290.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用for循环将数组实例插入表中_Php_Mysql_Insert - Fatal编程技术网

Php 使用for循环将数组实例插入表中

Php 使用for循环将数组实例插入表中,php,mysql,insert,Php,Mysql,Insert,我试图将数组中的数据行插入表中。它插入的是这个而不是实际数据: 这是我的密码: for ($i = 0; $i < $arraycount; $i++) { $db->query("INSERT INTO contact_tariffs (qid, retail_name, tariff_name, tariff_net, tariff_rental, tariff_inclusive, tariff_length, tariff_data)

我试图将数组中的数据行插入表中。它插入的是这个而不是实际数据:

这是我的密码:

for ($i = 0; $i < $arraycount; $i++)
{
    $db->query("INSERT INTO contact_tariffs (qid, retail_name, tariff_name, tariff_net, tariff_rental, tariff_inclusive, tariff_length, tariff_data)
                Values ('$qid', '$quote->retail_name[$i]', '$quote->tariff_name[$i]', '$quote->tariff_net[$i]', '$quote->tariff_rental[$i]', '$quote->tariff_inclusive[$i]', '$quote->tariff_length[$i]', '$quote->tariff_data[$i]' )");                        
}
($i=0;$i<$arraycount;$i++)的

{
$db->query(“插入联系人价格(qid、零售价格名称、价格名称、价格净额、价格租金、包括价格在内的价格、价格长度、价格数据))
值(“$qid”、“$quote->零售名称[$i]”、“$quote->关税名称[$i]”、“$quote->关税净额[$i]”、“$quote->关税租金[$i]”、“$quote->关税包含[$i]”、“$quote->关税长度[$i]”、“$quote->关税数据[$i]”);
}

我在使用
$\u POST
$\u SESSION
变量时也遇到过类似的问题,我唯一的解决方法是临时将值传输到临时变量中,并使用临时变量插入数据库。

变量太复杂,无法在字符串中使用。PHP将
$quote->retail_name
解释为一个变量,将
$i
解释为另一个变量,因为它不知道一个变量的结束位置和另一个变量的开始位置。例如:

$i = 1;
$quote->retail_name[ 1 ] = 'foo';

echo "result: $quote->retail_name[$i]";  // --> result: Array[1]
// the above is the same as 
// echo $quote->retail_name; echo "["; echo $i; echo "];

echo "result: ".$quote->retail_name[$i]; // --> result: foo
// The above leaves the variable outside the string so it's parsed correctly.
// You could also use "result: {$quote->retail_name[$i]}"
另见

请尝试以下方法:

for ($i = 0; $i < $arraycount; $i++)
{
    $db->query("INSERT INTO contact_tariffs (qid, retail_name, tariff_name, tariff_net, tariff_rental, tariff_inclusive, tariff_length, tariff_data)
                Values ('$qid', '".$quote->retail_name[$i]."', '".$quote->tariff_name[$i]."', '".$quote->tariff_net[$i]."', '".$quote->tariff_rental[$i]."', '".$quote->tariff_inclusive[$i]."', '".$quote->tariff_length[$i]."', '".$quote->tariff_data[$i]."' )");                        
}
($i=0;$i<$arraycount;$i++)的

{
$db->query(“插入联系人价格(qid、零售价格名称、价格名称、价格净额、价格租金、包括价格在内的价格、价格长度、价格数据))
值(“$qid”、“$quote->零售税名称[$i]。”、“$quote->关税税名称[$i]。”、“$quote->关税税净额[$i]。”、“$quote->关税税租金[$i]。”、“$quote->关税税包括[$i]。”、“$quote->关税税长度[$i]。”、“$quote->关税税数据[$i]。”)”;
}

尽管您也应该转义这些值。类似PDO的东西更可取。

变量太复杂,无法在字符串中使用。PHP将
$quote->retail_name
解释为一个变量,将
$i
解释为另一个变量,因为它不知道一个变量的结束位置和另一个变量的开始位置。例如:

$i = 1;
$quote->retail_name[ 1 ] = 'foo';

echo "result: $quote->retail_name[$i]";  // --> result: Array[1]
// the above is the same as 
// echo $quote->retail_name; echo "["; echo $i; echo "];

echo "result: ".$quote->retail_name[$i]; // --> result: foo
// The above leaves the variable outside the string so it's parsed correctly.
// You could also use "result: {$quote->retail_name[$i]}"
另见

请尝试以下方法:

for ($i = 0; $i < $arraycount; $i++)
{
    $db->query("INSERT INTO contact_tariffs (qid, retail_name, tariff_name, tariff_net, tariff_rental, tariff_inclusive, tariff_length, tariff_data)
                Values ('$qid', '".$quote->retail_name[$i]."', '".$quote->tariff_name[$i]."', '".$quote->tariff_net[$i]."', '".$quote->tariff_rental[$i]."', '".$quote->tariff_inclusive[$i]."', '".$quote->tariff_length[$i]."', '".$quote->tariff_data[$i]."' )");                        
}
($i=0;$i<$arraycount;$i++)的

{
$db->query(“插入联系人价格(qid、零售价格名称、价格名称、价格净额、价格租金、包括价格在内的价格、价格长度、价格数据))
值(“$qid”、“$quote->零售税名称[$i]。”、“$quote->关税税名称[$i]。”、“$quote->关税税净额[$i]。”、“$quote->关税税租金[$i]。”、“$quote->关税税包括[$i]。”、“$quote->关税税长度[$i]。”、“$quote->关税税数据[$i]。”)”;
}

尽管您也应该转义这些值。类似PDO的内容更可取。

您可以使用大括号,将数组值直接插入双引号字符串中:

for ($i = 0; $i < $arraycount; $i++)
{
    $db->query("INSERT INTO contact_tariffs (qid, retail_name, tariff_name, tariff_net, tariff_rental, tariff_inclusive, tariff_length, tariff_data)
                Values ('{$qid}', '{$quote->retail_name[$i]}', '{$quote->tariff_name[$i]}', '{$quote->tariff_net[$i]}', '{$quote->tariff_rental[$i]}', '{$quote->tariff_inclusive[$i]}', '{$quote->tariff_length[$i]}', '{$quote->tariff_data[$i]}' )");                        
}
($i=0;$i<$arraycount;$i++)的

{
$db->query(“插入联系人价格(qid、零售价格名称、价格名称、价格净额、价格租金、包括价格在内的价格、价格长度、价格数据))
值({$qid}’、{$quote->retail_name[$i]}’、{$quote->tariff_name[$i]}’、{$quote->tariff_net[$i]}’、{$quote->tariff_rental[$i]}、{$quote->tariff_length[$i]}’、{$quote->tariff_data[$i]}’);
}

…请注意SQL注入。

您可以使用大括号将数组值直接插入双引号字符串中:

for ($i = 0; $i < $arraycount; $i++)
{
    $db->query("INSERT INTO contact_tariffs (qid, retail_name, tariff_name, tariff_net, tariff_rental, tariff_inclusive, tariff_length, tariff_data)
                Values ('{$qid}', '{$quote->retail_name[$i]}', '{$quote->tariff_name[$i]}', '{$quote->tariff_net[$i]}', '{$quote->tariff_rental[$i]}', '{$quote->tariff_inclusive[$i]}', '{$quote->tariff_length[$i]}', '{$quote->tariff_data[$i]}' )");                        
}
($i=0;$i<$arraycount;$i++)的

{
$db->query(“插入联系人价格(qid、零售价格名称、价格名称、价格净额、价格租金、包括价格在内的价格、价格长度、价格数据))
值({$qid}’、{$quote->retail_name[$i]}’、{$quote->tariff_name[$i]}’、{$quote->tariff_net[$i]}’、{$quote->tariff_rental[$i]}、{$quote->tariff_length[$i]}’、{$quote->tariff_data[$i]}’);
}

…请注意SQL注入。

查看,使用大括号,或者可能是sprintf或prepared语句。查看,使用大括号,或者可能是sprintf或prepared语句。+1用于指向PDO,或者他可以使用语法:
“{$quote->retail_name[$i]}”
我不明白你说的太复杂是什么意思,您是指变量结构还是其中的数据?PHP没有意识到
$quote->which[$i]
应该是一个变量。它认为它分别是
$quote->whatever
$i
。请参见编辑。+1以指向PDO,或者他可以使用语法:
“{$quote->retail_name[$i]}”
我不明白您所说的太复杂是什么意思,您是指变量结构还是其中的数据?PHP没有意识到
$quote->whicher[$i]
应该是一个变量。它认为它分别是
$quote->whatever
$i
。请参阅编辑。它位于受信任的系统上,因此我不担心:)在SQL查询中正确转义参数不仅仅是为了防止恶意注入。像
“O'neill”
这样完全有效的名字也会给你带来麻烦。因此,无论你是否信任所有用户(和/或即使你自己是唯一的用户),都要逃避这些该死的事情。这是在一个受信任的系统上,所以我不担心:)在SQL查询中正确地逃避参数不仅仅是为了防止恶意注入。像
“O'neill”
这样完全有效的名字也会给你带来麻烦。因此,无论你是否信任所有用户(和/或即使你自己是唯一的用户),都要逃避这些该死的事情。