我目前需要使用PHP将大量变量写入MySQL数据库。变量名称的结构基于字母a到z,因此下面是示例。
目前数据存储在一些变量中($ title [LETTER],$ unit [LETTER],$ describe [LETTER])所以我确信/希望必须有一种简单的方法来循环它们
如何编写此MySQL查询而无需手动编写78个短语?有没有办法在MySQL调用中插入循环,或者我应该在调用之前使用循环?
$sql="INSERT INTO Persons (a, a_unit, a_describe, b)
VALUES ('$title[a]', '$unit[a]', '$describe[a]', '$title[b]')";
答案 0 :(得分:1)
如果你知道所有可能的字母组合,你可以先建立一个数组。
$letters = array('a', 'b', 'c');
然后遍历该数组并运行SQL
foreach($letters as $key => $letter) {
$sql="INSERT INTO Persons ($letter, $letter_unit, $letter_describe)
VALUES ('$title[$letter]', '$unit[$letter]', '$describe[$letter]')";
};
每次都在运行SQL。
答案 1 :(得分:1)
您应该在SQL语句之前使用循环。你可以做的是使用一个循环来构建将进入SQL语句的“值”部分的字符串,然后连接到SQL语句然后执行
答案 2 :(得分:0)
最好的方法:编写一个自动生成非常长的SQL的脚本:)
恕我直言最好使用格式SET field =' value',field2 =' value' ......将来会更容易找到该字段并在必要时进行编辑
答案 3 :(得分:0)
您应该使用循环构建查询来构造它(以构建正确的字符串)
INSERT INTO Persons(a, a_unit, a_describe, b)
VALUES('sth11', 'sth12', 'sth13', 'sth14'),
VALUES('sth21', 'sth22', 'sth23', 'sth24'),
...
VALUES('sthn1', 'sthn2', 'sthn3', 'sthn4')
你应该创建一个for循环,我将用伪代码编写,因为坦率地说,我不知道PHP。我相信你将能够在PHP中遵循以下想法:
query = 'INSERT INTO Persons (a, a_unit, a_describe, b) '
for letter in letters_to_loop_over:
query += 'VALUES( ' + $title[letter] + ', ' + $unit[letter] + ', ' + $describe[letter] + ', ' + $title[letter] + '), '
然后检查你构建的字符串是否看起来像是正确的SQL(我只是打印它),并将其作为要执行的查询传递。
答案 4 :(得分:0)
您可以在提交之前使用PDO构建查询,也可以按照建议手动执行。但是我看到你的变量结构不一致,即。 $ title,$ unit等。你应该将所有Person数据映射到一个类(Person.php),然后你的循环操作会更流畅。
所以基本上你需要一个类似的地图:Class :: Person-> a_describe = $ describe ['a']