php 将php数组插入到mysql表中

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/15056528/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-25 08:27:57  来源:igfitidea点击:

Insert php array into mysql table

phpmysqlarraysdatabase

提问by user2037290

Update: I forgot to mention that echo $matstringoutputs '65.70', 'Coles','34 days','14'- which would appear to be the right syntax?

更新:我忘了提到 echo$matstring输出'65.70', 'Coles','34 days','14'- 这似乎是正确的语法?

I'm a php/mysql newbie, and I think this is fairly basic, but having read all of the other stackoverflow questions on this topic and fiddling with different versions of my code for several hours I can't understand what I'm doing wrong. Would very much appreciate any help/suggestions.

我是一个 php/mysql 新手,我认为这是相当基本的,但是在阅读了关于这个主题的所有其他 stackoverflow 问题并摆弄不同版本的代码几个小时后,我无法理解我在做什么错误的。非常感谢任何帮助/建议。

Aim: pass data from my php array ($matrix) into a mysql table

目的:将数据从我的 php 数组 ( $matrix)传递到 mysql 表中

$matrix[1]=
( [0] => 65.70 [1] => Coles [2] => 34 days [3] => 14 )

$matrix[2]=
( [0] => 62.70 [1] => Coles [2] => 13 days [3] => 14 )

$matrix[3]=
( [0] => 12.70 [1] => Safeway [2] => 43 days [3] => 14 )

Code:

代码:

$matstring=implode("','",$matrix[1]);
$matstring="'".$matstring."'";
mysql_query('INSERT INTO Australia (Price, Company, Days, Weight) VALUES ('$matstring')');

采纳答案by user2037290

Corrected code:

更正的代码:

$matstring=implode("','",$matrix[1]);

mysql_query("INSERT INTO Australia (Price, Company, Days, Weight) VALUES ('$matstring')");

(i.e. delete the second line from original code and put double quotes around the argument of mysql_query)

(即从原始代码中删除第二行,并在 mysql_query 的参数周围加上双引号)

Appreciate user1847757's help - as s/he pointed out, $matstringitself was correct, but the single quotes inside of VALUES(' ')were being joined to the single quotes added to $matstringin the 2nd line of my original code, resulting in VALUES(''65.70','Coles','34 days','14'')

感谢 user1847757 的帮助 - 正如他/他指出的那样,$matstring它本身是正确的,但是里面的单引号VALUES(' ')被加入到$matstring我原始代码的第二行中添加的单引号中,导致VALUES(''65.70','Coles','34 days','14'')

Thanks all for your help & suggestions

感谢大家的帮助和建议

回答by Eugen

when i run this code :

当我运行此代码时:

$matrix = array();
$matrix[1] = array( 0 => 65.70, 1 => 'Coles', 2 => '34 days', 3 => 14 );
$matstring=implode("','",$matrix[1]);
$matstring="'".$matstring."'";
print "INSERT INTO Australia (`Price`, `Company`, `Days`, `Weight`) VALUES ($matstring)";

become result:

变成结果:

INSERT INTO Australia (`Price`, `Company`, `Days`, `Weight`) VALUES ('65.7','Coles','34 days','14')

回答by Sanjiv Malviya

$arr = array(
'Afghanistan',
'Albania',
'Algeria',
'American Samoa',
'Andorra',
'Angola',
'Anguilla',
'Antarctica',
'Antigua and Barbuda',
'Argentina',
'Armenia',
'Aruba',
'Australia',
'Austria',
'Azerbaijan',
'Bahamas',
'Bahrain',
'Bangladesh',
'Barbados',
'Belarus',
'Belgium',
'Belize',
'Benin',
'Bermuda',
'Bhutan',
'Bolivia',
'Bosnia and Herzegovina',
'Botswana',
'Bouvet Island',
'Brazil',
'British Indian Ocean Territory',
'Brunei Darussalam',
'Bulgaria',
'Burkina Faso',
'Burundi',
'Cambodia',
'Cameroon',
'Canada',
'Cape Verde',
'Cayman Islands',
'Central African Republic',
'Chad',
'Chile',
'China',
'Christmas Island',
'Cocos (Keeling) Islands',
'Colombia',
'Comoros',
'Congo',
'Cook Islands',
'Costa Rica',
'Croatia (Hrvatska)',
'Cuba',
'Cyprus',
'Czech Republic',
'Denmark',
'Djibouti',
'Dominica',
'Dominican Republic',
'East Timor',
'Ecuador',
'Egypt',
'El Salvador',
'Equatorial Guinea',
'Eritrea',
'Estonia',
'Ethiopia',
'Falkland Islands (Malvinas)',
'Faroe Islands',
'Fiji',
'Finland',
'France',
'France, Metropolitan',
'French Guiana',
'French Polynesia',
'French Southern Territories',
'Gabon',
'Gambia',
'Georgia',
'Germany',
'Ghana',
'Gibraltar',
'Guernsey',
'Greece',
'Greenland',
'Grenada',
'Guadeloupe',
'Guam',
'Guatemala',
'Guinea',
'Guinea-Bissau',
'Guyana',
'Haiti',
'Heard and Mc Donald Islands',
'Honduras',
'Hong Kong',
'Hungary',
'Iceland',
'India',
'Isle of Man',
'Indonesia',
'Iran (Islamic Republic of)',
'Iraq',
'Ireland',
'Israel',
'Italy',
'Ivory Coast',
'Jersey',
'Jamaica',
'Japan',
'Jordan',
'Kazakhstan',
'Kenya',
'Kiribati',
'Korea, Democratic People\'s Republic of',
'Korea, Republic of',
'Kosovo',
'Kuwait',
'Kyrgyzstan',
'Lao People\'s Democratic Republic',
'Latvia',
'Lebanon',
'Lesotho',
'Liberia',
'Libyan Arab Jamahiriya',
'Liechtenstein',
'Lithuania',
'Luxembourg',
'Macau',
'Macedonia',
'Madagascar',
'Malawi',
'Malaysia',
'Maldives',
'Mali',
'Malta',
'Marshall Islands',
'Martinique',
'Mauritania',
'Mauritius',
'Mayotte',
'Mexico',
'Micronesia, Federated States of',
'Moldova, Republic of',
'Monaco',
'Mongolia',
'Montenegro',
'Montserrat',
'Morocco',
'Mozambique',
'Myanmar',
'Namibia',
'Nauru',
'Nepal',
'Netherlands',
'Netherlands Antilles',
'New Caledonia',
'New Zealand',
'Nicaragua',
'Niger',
'Nigeria',
'Niue',
'Norfolk Island',
'Northern Mariana Islands',
'Norway',
'Oman',
'Pakistan',
'Palau',
'Palestine',
'Panama',
'Papua New Guinea',
'Paraguay',
'Peru',
'Philippines',
'Pitcairn',
'Poland',
'Portugal',
'Puerto Rico',
'Qatar',
'Reunion',
'Romania',
'Russian Federation',
'Rwanda',
'Saint Kitts and Nevis',
'Saint Lucia',
'Saint Vincent and the Grenadines',
'Samoa',
'San Marino',
'Sao Tome and Principe',
'Saudi Arabia',
'Senegal',
'Serbia',
'Seychelles',
'Sierra Leone',
'Singapore',
'Slovakia',
'Slovenia',
'Solomon Islands',
'Somalia',
'South Africa',
'South Sudan',
'South Georgia South Sandwich Islands',
'Spain',
'Sri Lanka',
'St. Helena',
'St. Pierre and Miquelon',
'Sudan',
'Suriname',
'Svalbard and Jan Mayen Islands',
'Swaziland',
'Sweden',
'Switzerland',
'Syrian Arab Republic',
'Taiwan',
'Tajikistan',
'Tanzania, United Republic of',
'Thailand',
'Togo',
'Tokelau',
'Tonga',
'Trinidad and Tobago',
'Tunisia',
'Turkey',
'Turkmenistan',
'Turks and Caicos Islands',
'Tuvalu',
'Uganda',
'Ukraine',
'United Arab Emirates',
'United Kingdom',
'United States',
'United States minor outlying islands',
'Uruguay',
'Uzbekistan',
'Vanuatu',
'Vatican City State',
'Venezuela',
'Vietnam',
'Virgin Islands (British)',
'Virgin Islands (U.S.)',
'Wallis and Futuna Islands',
'Western Sahara',
'Yemen',
'Zaire',
'Zambia',
'Zimbabwe'
);
foreach($arr as $ar){

  $query = "INSERT INTO country(country) VALUES('$ar') ";
  mysqli_query($connect,$query);

}
die;

回答by Marc B

you're building the query wrong. it'll look like this:

您构建的查询错误。它看起来像这样:

INSERT INTO ... VALUES (''65.70,Coles,34 days,14'');

note how all 4 values are inside a SINGLE string.. but the string's also wrong ('').

请注意所有 4 个值如何在单个字符串中......但该字符串也是错误的 ( '')。

you need to quote each individual value of the array:

您需要引用数组的每个单独值:

('65.70', 'Coles', '34 days', '14')

THENyou implode it, giving you

然后你内爆它,给你

INSERT INTO ... VALUES ('65.70', 'Coles', etc...)

回答by Eugen

mysql_query("INSERT INTO Australia (`Price`, `Company`, `Days`, `Weight`) VALUES ($matstring)");

回答by Rok Jarc

I faced similiar problem today and solved it like this: in my case $bank_infois an array that holds the data to insert as a new row...

我今天遇到了类似的问题并像这样解决了它:在我的例子中$bank_info是一个数组,它保存要作为新行插入的数据......

$sql = "INSERT INTO user_bank_info (user_id,
                                    name,
                                    address,
                                    ZIP,
                                    city,
                                    state,
                                    country,
                                    wat_id,
                                    bank_bic,
                                    account_iban)
        VALUES  ('$id_user',
                 '{$bank_info['name']}',
                 '{$bank_info['addr']}',
                 '{$bank_info['zipn']}',
                 '{$bank_info['city']}',
                 '{$bank_info['stat']}',
                 '{$bank_info['ctry']}',
                 '{$bank_info['watn']}',
                 '{$bank_info['bbic']}',
                 '{$bank_info['iban']}')";

回答by Tapeshwar

Use serializefunction for adding array data into table. Ex-

使用序列化函数将数组数据添加到表中。前任-

$array["a"] = "Foo";
$array["b"] = "Bar";
$array["c"] = "Baz";
$array["d"] = "Wom";
$str = serialize($array);

add $str into table.When we get data then use unserializefunction.Ex- $arr = unserialize(urldecode($strenc));

添加$str into table。当我们获取数据时,然后使用反序列化函数。Ex-$arr = unserialize(urldecode($strenc));

Note: For URL, use urldecodefunction.

注意:对于 URL,使用urldecode函数。

回答by Rus Yates-Aylott

Here's how I do it (very simple):

这是我的做法(非常简单):

//Fetch the original array:

$query = mysql_query("SELECT * FROM Original_Table") or die(mysql_error());

while($record = mysql_fetch_array($query)){

$num=count($record); //Count The Number Of elements in the array

$num=$num/2; //use this if the array has both key numbers AND names

$cnum=0;

for($cnum;$cnum<$num;$cnum++){ //cycle through the elements of the array

$entry=$entry."'".$record[$cnum]."',";

}

$entry=substr($entry,0,strlen($entry)-1);// this just removes the final comma

// Now we can add the entry into the new table:

mysql_query("insert into New Table (Field1, Field2,Field3.....etc) values($entry)")or die(mysql_error());

}//end while