将数组插入数据库表

时间:2014-01-03 07:48:28

标签: php arrays database insert save

我是php的新手,我在数据库和数组中练习。我的数据库中有两个表。我能够在我的一个表中获取数据并将其保存在一个数组中。现在我要做的是将数组中的数据保存到我的另一个表中。

我的数组是multidime:

数组([0] =>数组([recNAME] => NAME1 [公司] => [地址1] => ADDRESS1 [地址2] => [城市] => CITY1 [省] = > PROVINCE1 [postalCODE] => 0 [contactNO] => 926XXXXX [email] => XXXXX@yahoo.com [商品] =>商品1 [类型] => [重量] => 0 [长度] => 0 [宽度] => 0 [高度] => 0 [decVAL] => 0 [specINSTRUC] => [shipREF] => REF1 [payMETHOD] => CashOnDelivery [packNO] = > 200XXXX-XXX [trackNO] => 200XXXX-XXX)[1] =>数组([recNAME] => NAME2 [公司] => [地址1] => ADDRESS2 [地址2] => [ city] => CITY2 [省] => PROVINCE2 [postalCODE] => 0 [contactNO] => 905XXXXXX [email] => XXXXX@hotmail.com [商品] =>商品2 [类型] =&gt ; [weight] => 0 [length] => 0 [width] => 0 [height] => 0 [decVAL] => 361 [specINSTRUC] =>我在上面给出的地址从MF,11 AM-6PM,打电话或发短信给我确认[shipREF] => 200XXXXX [payMETHOD] => CashOnDe制服[packNO] => 200XXXX-XXX [trackNO] => 200XXXX-XXX))

将它保存到我的另一张桌子有哪些方法?我搜索了一些,其中大部分是序列化。我不知道如何将它保存到桌面上。请帮忙。问候。

3 个答案:

答案 0 :(得分:1)

你必须制作动态字符串数组,然后将每个值单独分解为字符串。

将生成动态字符串,然后您可以将该字符串插入表中。

答案 1 :(得分:1)

Yo可以使用php serialize方法生成值的可存储表示。当您从数据库获取数据时,请使用unserialize

答案 2 :(得分:1)

你必须编写一个查询来实现它,当然你必须循环你的数组。

有更好的方法可以达到这个目的,但是对于简单的练习我建议你这样做,你有很多字符串切割等等。

使用echo $ query在执行代码之前测试代码的结果。

一个工作示例可能如下所示:

$query = "INSERT INTO myTable (`name`, `company`, `adress_1`) VALUES (";

foreach($myArray as $data) {
    $query .= "'" . mysql_real_escape_string($data["recNAME"]) . "', ";
    $query .= "'" . mysql_real_escape_string($data["company"]) . "', ";
    $query .= "'" . mysql_real_escape_string($data["address1"]) . "'), (";
}

$query = substr($query, 0, strlen($query) - 3);

echo $query;

mysql_query($query);

最好的解决方案是编写/找到一个有用的MySQL处理程序类,它提供简单的函数,比如接受数组的插入函数。

但我不确定你对OOP了解多少。 最好是你了解如何手动完成这个原则,然后自己编写课程,然后你完全理解它。

然而,更复杂的方式: 这不是一个完整的例子!

class MySQL
{
    private $handle = null;
    private function connect() {
        $this->handle = mysql_connect("127.0.0.1", "user", "pass", "db");
    }

    public function execute($query) {
        if($this->handle == NULL) {
            $this->connect();
        }
        if($this->handle != NULL) {
            mysql_query($query, $this->handle);
        }
    }

    public function insert($table, $fields, $values) {
        $query = "";
        if(is_array($fields) == true && is_array($values) == true) {
            $query .= "INSERT INTO `$table` (";
            foreach($fields as $field) {
                $query .= "`$field`" . ", ";
            }
            $query = substr($query, 0, strlen($query) - 2);
            $query .= ") VALUES (";
            $count = 0;
            foreach($values as $value) {
                $query .= "'" . mysql_real_escape_string($value) . "'";
                if($count == count($fields)) {
                    $query .= ", ";
                } else {
                    $query .= "),(";
                }
                $count++;
            }
            $query = substr($query, 0, strlen($query) - 2);
        }

        if(strlen($query) > 0) {
            $this->execute($query);
            return true;
        }

        return false;
    }
}

当然这个例子不是很完整,它只是一个简短的例子,你可以在课堂上存储结果,数字等等,但是这里有一个用法:

$sql = new MySQL();
$sql->insert("myTable", array("name, "company", "adress_1"), array("guy, "company a", "street 1", "girl", "company b", "street 2"));