数组到数据库

时间:2013-11-28 11:02:47

标签: php mysql arrays

我一直在寻找几个小时的发型,我无法弄明白。 我所拥有的是一个我想放入数据库的数组

if(isset($_POST['newvalue']))
            {
                $array = $_POST['newvalue'];
                $getcatidquery = mysql_query("SELECT * FROM categories_to_sales WHERE sales_id = $saleid");

                foreach($array as $value) {
                    while($getcatid = mysql_fetch_assoc($getcatidquery)) { 
                        $catid = $getcatid['categories_id'];
                    }
                    mysql_query("UPDATE categories_to_sales SET value = '$value' WHERE sales_id = '$saleid' AND categories_id = '$catid'");
                }

                echo "Executed a Query.";               
            }

上面的代码是按下更新表单的提交按钮时正在执行的代码。但是,此代码仅更新表单中的最后一个输入而不是全部输入..

$ _ POST ['newvalue']是数组,我也可以在var_dump中显示这个数组。

是的,我知道我没有使用PDO,我也不想使用它,因为整个系统都是用mysql制作的,公司不会更新他们的PHP版本。 (我只是这样说,因为上次这是我对代码的唯一评论。)

输入表格:

while($rowc = mysql_fetch_assoc($sql))
            {
                    echo '<br/>' . $rowc['categorie_name'] . ' - ' . $rowc['value'];
                    echo '<input type="text" class="valueField" name="newvalue[]" id="newvalue"/>';
            }

$sql = mysql_query("SELECT * FROM categories_to_sales
        LEFT JOIN sales ON categories_to_sales.sales_id=sales.sales_id 
        LEFT JOIN categories ON categories_to_sales.categories_id=categories.categorie_id 
        WHERE sales.sales_id = '$saleid'
        ");

4 个答案:

答案 0 :(得分:2)

您可以使用序列化来存储数据库中的php数组:

$becomeString = serialize($yourArray);

如果要将其作为数组返回,请使用unserialize:

$returnArray = unserialize($myStringCreatedWithSerialize);

检查:

http://php.net/manual/en/function.serialize.php

http://php.net/manual/en/function.unserialize.php

答案 1 :(得分:1)

您必须在while循环中执行UPDATE语句:

更改此

                foreach($array as $value) {
                    while($getcatid = mysql_fetch_assoc($getcatidquery)) { 
                        $catid = $getcatid['categories_id'];
                    }
                    mysql_query("UPDATE categories_to_sales SET value = '$value' WHERE sales_id = '$saleid' AND categories_id = '$catid'");
                }

                foreach($array as $value) {
                    while($getcatid = mysql_fetch_assoc($getcatidquery)) { 
                        $catid = $getcatid['categories_id'];
                        mysql_query("UPDATE categories_to_sales SET value = '$value' WHERE sales_id = '$saleid' AND categories_id = '$catid'");
                    }
                }

答案 2 :(得分:1)

您可以使用serialize在DB中插入数组,并使用for DB中的fetch数组进行反序列化:

$arr = serailize($data);

$arr = unserailize($data);

有关详细信息,请参阅:

答案 3 :(得分:0)

如果您能够通过var_dump获取数组值并希望将数组数据保存到数据库中,那么最好将数组数据编码为字符串并保存。当通过select语句获取数据时,将其解码为数组格式。

将数组数据编码为字符串:

$encodedArray = json_encode($array);

将字符串数据(由json编码)解码为数组:

$decodeArray = json_decode(MYSQL_FETCHED_VALUE, true);

您也可以使用serializedeserialize将数组数据保存到数据库中。

希望会有所帮助!