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”
这样完全有效的名字也会给你带来麻烦。因此,无论你是否信任所有用户(和/或即使你自己是唯一的用户),都要逃避这些该死的事情。