这是我当前的$_POST
输出。
Array
(
[fullname] => John Doe
[email] => [email protected]
[phone] => 123-455-6444
[address] => 23-10 My Address
[zip] => 12345
[fullname_2] => Array
(
[0] => M. Owen
[1] => V. Persie
)
[email_2] => Array
(
[0] => [email protected]
[1] => [email protected]
)
[phone_2] => Array
(
[0] => 123-455-6555
[1] => 222-111-1111
)
[submit] => Submit
)
我希望上面的数据将存储到我当前的数据库格式,如下所示。
id | fullname | email | phone | address | zip | uid
----------------------------------------------------------------------------------------
1 | John Doe | [email protected] | 123-455-6444 | 23-10 My Address | 12345 | 1
2 | M. Owen | [email protected] | | | | 1
3 | V. Persie | [email protected] | | | | 1
我越来越模糊如何将数组保存到MySQL。
$query = "INSERT INTO users SET fullname ='" . $fullname . "', email ='" . $email . "', phone='" . $phone . "', address ='" . $address . "', zip='" . $zip . "'";
$db->rq($query);
让我知道线索。
最佳答案
首先,我假设最后一列uid
引用插入了所有数据的用户ID,并用于标记第一个元素与另外两个元素之间的连接。
其次,我对Google的php DB包装器一无所知(或者您可以为此提供任何代号),因此我假设它是code.google.com
上托管的许多数据库包装器项目之一。由于我不知道是哪一个,因此您必须寻找与php function mysql_insert_id()等效的东西。
和一般算法来满足您的需求:
如您的示例中插入第一行。
获取此行的最后一个插入ID。
遍历$_POST['fullname_2']
收集数据以供下一次查询
运行 ;)
例:
$lastId = $db->functionToGetLastId();
$valuesArray = array();
foreach($_POST['fullname_2'] as $key => $value){
$fullname = sanitizeFunction($value);
$email = sanitizeFunction($_POST['email_2'][$key]);
$phone = sanitizeFunction($_POST['phone_2'][$key]);
$valuesArray[] = "('{$fullname}','{$email}','{$phone}',{$lastId})";
}
$secondQuery = "INSERT INTO users (fullname,email,phone,uid) VALUES " . implode(',',$valuesArray);
$db->rq($secondQuery);