这是我当前的$_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);

10-08 02:30