5

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

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

目标:将数据从我的 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 )

代码:

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

8 回答 8

2

当我运行此代码时:

$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)";

成为结果:

INSERT INTO Australia (`Price`, `Company`, `Days`, `Weight`) VALUES ('65.7','Coles','34 days','14')
于 2013-02-24T21:25:03.500 回答
1

更正的代码:

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

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

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

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

感谢大家的帮助和建议

于 2013-02-25T19:03:05.873 回答
1
$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;
于 2018-03-21T11:30:30.357 回答
0

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

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

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

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

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

然后你内爆它,给你

INSERT INTO ... VALUES ('65.70', 'Coles', etc...)
于 2013-02-24T20:56:27.640 回答
0
mysql_query("INSERT INTO Australia (`Price`, `Company`, `Days`, `Weight`) VALUES ($matstring)");
于 2013-02-24T21:00:37.807 回答
0

我今天遇到了类似的问题并像这样解决了它:在我的例子$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']}')";
于 2013-09-06T14:09:10.323 回答
0

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

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

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

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

于 2014-12-22T07:10:35.903 回答
0

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

//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
于 2015-10-20T16:02:18.250 回答