Php 从数组插入 sql
Php insert into sql from array
我有 2 个数组,我想通过一个按钮将它们添加到我的 sql table 中。
我不知道在 sql 中使用数组。我看了很多页面,但找不到简单的方法。
$name=array("Jack", "John", "Fiona");
$country=array("London", "Greece", "Japan");
$entry =' went to school';
Sql table :
**id** **|** **name** **|** **entry** **|** **country**
**1** Jack **|** Jack went to school **|** London
**2** John **|** John went to school **|** Greece
**3** Fiona **|** Fiona went to school **|** Japan
我试过类似的方法,但没有用。问候
$sql = mysql_query("INSERT INTO bilgi (name,entry,country) VALUES ('$name[]','$name[]&$entry','$country[]'");
$name=array("Jack", "John", "Fiona");
$country=array("London", "Greece", "Japan");
$entry =' went to school';
$SizeOfName=sizeof($name);
for($i=0;$i<$SizeOfName;$i++)
{
$Name=$name[$i];
$Country=$country[$i];
$Entry=$Name$entry;
$sql = mysql_query("INSERT INTO bilgi (name,entry,country) VALUES ('$Name','$Entry','$Country')";
}
你可以用这个
for ($i = 0; $i < count($name); $i++) {
$entryVal = $name[$i].$entry;
$sql = mysql_query("INSERT INTO bilgi (name,entry,country) VALUES ('".$name[$i]."','".$entryVal."','".$country[$i]."'");
}
<?php
$name=array("Jack", "John", "Fiona");
$country=array("London", "Greece", "Japan");
$entry =' went to school';
for($i=0 ; $i<count($name);$i++){
$sql = mysql_query("INSERT INTO bilgi (name,entry,country) VALUES ('".$name[$i]."','".$name[$i].$entry."','".$country[$i]."'");
}
您真的应该升级到 PDO
或 mysqli
。 mysql API 已经弃用一段时间了,将在 PHP (7) 的下一个版本中删除。
在我看来,要回答您的实际问题,第一步应该是使数据合理,即:
$data = [
[
'name' => 'Jack',
'country' => 'London',
],
[
'name' => 'John',
'country' => 'Greece',
],
[
'name' => 'Fiona',
'country' => 'Japan',
],
];
这使得处理和维护数据变得更加容易。
接下来你只需要遍历单个数组:
$entry = ' went to school';
foreach ($data as $item) {
$sql = mysql_query("INSERT INTO bilgi (name,entry,country) VALUES ('$item[name]','$item[name]$entry','$item[country]'");
}
然而,这仍然使用旧的 API,并且不能防止 sql 漏洞。你应该做的(在 making a database connection proper 之后)是:
$entry = 'went to school';
$stmt = $pdo->prepare('INSERT INTO bilgi (name,entry,country) VALUES (:name, :entry, :country');
foreach ($data as $item) {
$stmt->execute([
'name' => $item['name'],
'entry' => $entry,
'country' => $item['country'],
]);
}
我还从输入字段中删除了 name
,因为这在您的数据库中是一种糟糕的复制方式。如果名称发生变化,您将无法使用 entry
列中的名称。
这使用了一个未弃用的 API。防止 SQL 注入漏洞,并且更加理智和可维护。
您可以插入一个 SQL 作为:
$name = array("Jack", "John", "Fiona");
$country = array("London", "Greece", "Japan");
$entry =' went to school';
$values;
for ($i = 0; $i < count($name); $i++) {
$values[] = "('$name[$i]', '$name[$i]$entry', '$country[$i]')";
}
$sql = 'INSERT INTO bilgi (name, entry, country) VALUES ';
for ($i = 0; $i < count($values); $i++) {
$sql .= $values[$i];
if($i < (count($values) - 1)) $sql .= ", ";
}
$result = mysql_query($sql);
在插入数据库之前请注意您的数组。 $name 和 $country 的元素数量必须相等。
这是针对您的问题的动态解决方案:
<?php
$name=array("Jack", "John", "Fiona","Mack","Raja","Bohemia");
$country=array("London", "Greece", "Japan");
$entry ='went to school';
$bigcount = max(count($name),count($country));
for($i=0;$i<$bigcount;$i++)
{
$finalValues .= "('$name[$i]','$country[$i]','$entry'),";
}
$final = substr($finalValues,0,-1);
$query = "INSERT INTO bilgi (name,entry,country) VALUES $final";
$sql = mysql_query($query);
?>
我有 2 个数组,我想通过一个按钮将它们添加到我的 sql table 中。 我不知道在 sql 中使用数组。我看了很多页面,但找不到简单的方法。
$name=array("Jack", "John", "Fiona");
$country=array("London", "Greece", "Japan");
$entry =' went to school';
Sql table :
**id** **|** **name** **|** **entry** **|** **country**
**1** Jack **|** Jack went to school **|** London
**2** John **|** John went to school **|** Greece
**3** Fiona **|** Fiona went to school **|** Japan
我试过类似的方法,但没有用。问候
$sql = mysql_query("INSERT INTO bilgi (name,entry,country) VALUES ('$name[]','$name[]&$entry','$country[]'");
$name=array("Jack", "John", "Fiona");
$country=array("London", "Greece", "Japan");
$entry =' went to school';
$SizeOfName=sizeof($name);
for($i=0;$i<$SizeOfName;$i++)
{
$Name=$name[$i];
$Country=$country[$i];
$Entry=$Name$entry;
$sql = mysql_query("INSERT INTO bilgi (name,entry,country) VALUES ('$Name','$Entry','$Country')";
}
你可以用这个
for ($i = 0; $i < count($name); $i++) {
$entryVal = $name[$i].$entry;
$sql = mysql_query("INSERT INTO bilgi (name,entry,country) VALUES ('".$name[$i]."','".$entryVal."','".$country[$i]."'");
}
<?php
$name=array("Jack", "John", "Fiona");
$country=array("London", "Greece", "Japan");
$entry =' went to school';
for($i=0 ; $i<count($name);$i++){
$sql = mysql_query("INSERT INTO bilgi (name,entry,country) VALUES ('".$name[$i]."','".$name[$i].$entry."','".$country[$i]."'");
}
您真的应该升级到 PDO
或 mysqli
。 mysql API 已经弃用一段时间了,将在 PHP (7) 的下一个版本中删除。
在我看来,要回答您的实际问题,第一步应该是使数据合理,即:
$data = [
[
'name' => 'Jack',
'country' => 'London',
],
[
'name' => 'John',
'country' => 'Greece',
],
[
'name' => 'Fiona',
'country' => 'Japan',
],
];
这使得处理和维护数据变得更加容易。
接下来你只需要遍历单个数组:
$entry = ' went to school';
foreach ($data as $item) {
$sql = mysql_query("INSERT INTO bilgi (name,entry,country) VALUES ('$item[name]','$item[name]$entry','$item[country]'");
}
然而,这仍然使用旧的 API,并且不能防止 sql 漏洞。你应该做的(在 making a database connection proper 之后)是:
$entry = 'went to school';
$stmt = $pdo->prepare('INSERT INTO bilgi (name,entry,country) VALUES (:name, :entry, :country');
foreach ($data as $item) {
$stmt->execute([
'name' => $item['name'],
'entry' => $entry,
'country' => $item['country'],
]);
}
我还从输入字段中删除了 name
,因为这在您的数据库中是一种糟糕的复制方式。如果名称发生变化,您将无法使用 entry
列中的名称。
这使用了一个未弃用的 API。防止 SQL 注入漏洞,并且更加理智和可维护。
您可以插入一个 SQL 作为:
$name = array("Jack", "John", "Fiona");
$country = array("London", "Greece", "Japan");
$entry =' went to school';
$values;
for ($i = 0; $i < count($name); $i++) {
$values[] = "('$name[$i]', '$name[$i]$entry', '$country[$i]')";
}
$sql = 'INSERT INTO bilgi (name, entry, country) VALUES ';
for ($i = 0; $i < count($values); $i++) {
$sql .= $values[$i];
if($i < (count($values) - 1)) $sql .= ", ";
}
$result = mysql_query($sql);
在插入数据库之前请注意您的数组。 $name 和 $country 的元素数量必须相等。
这是针对您的问题的动态解决方案:
<?php
$name=array("Jack", "John", "Fiona","Mack","Raja","Bohemia");
$country=array("London", "Greece", "Japan");
$entry ='went to school';
$bigcount = max(count($name),count($country));
for($i=0;$i<$bigcount;$i++)
{
$finalValues .= "('$name[$i]','$country[$i]','$entry'),";
}
$final = substr($finalValues,0,-1);
$query = "INSERT INTO bilgi (name,entry,country) VALUES $final";
$sql = mysql_query($query);
?>