将数组插入mysql db函数

时间:2011-01-01 17:44:07

标签: php mysql sql

我有一个数组,其中键代表我数据库中的每一列。现在我想要一个进行mysql更新查询的函数。像

这样的东西
    $db['money'] = $money_input + $money_db;

    $db['location'] = $location

    $query = 'UPDATE tbl_user SET '; 

            for($x = 0; $x < count($db); $x++ ){

            $query .= $db something ".=." $db something

            }

    $query .= "WHERE username=".$username." ";      

4 个答案:

答案 0 :(得分:3)

您想要foreach

$values = array();
foreach($db as $column => $value){
    $values[] = $column . "='" . mysql_real_escape_string($value) . "'";
}
$query .= implode(',', $values);

但是这会将所有值设置为字符串(不确定MySQL是否进行自动转换),您可能希望首先使用is_numeric进行测试:

if(!is_numeric($value)) {
    $value = "'" . mysql_real_escape_string($value) . "'";
}
$values[] = $column . "=" . $value;

<强>更新

每当您在查询中设置 string 值时,都必须将它们放入引号中。因此你必须写:

$query .= "WHERE username='".$username."'";

(注意单引号)。

使用sprintf可以使整个事情更加清晰。

答案 1 :(得分:0)

您可以使用array_keys提取数组元素的名称,然后只使用类似的内容......

$query .= $keys[$x] . '="' . mysql_real_escape_string($db[$keys[$x]]) .'" ';

...在for循环中。

(我推测存在......

$keys = array_keys($db);

...在上面定义了$ db值之后。)

那就是说,我真的不确定我会推荐这种“一刀切”的做法。

答案 2 :(得分:0)

类似于this

function mysql_update_array($table, $data, $id_field, $id_value) {
    foreach ($data as $field=>$value) {
        $fields[] = sprintf("`%s` = '%s'", $field, mysql_real_escape_string($value));
    }
    $field_list = join(',', $fields);

    $query = sprintf("UPDATE `%s` SET %s WHERE `%s` = %s", $table, $field_list, $id_field, intval($id_value));

    return $query;
}

请注意,代码不是我的!

答案 3 :(得分:0)

foreach($array as $attr => $val)
    $items[] = "$attr='$val'";    
mysql_query("INSERT INTO table SET ".implode(',', $items));