PHP如何引用字符串数组值

时间:2014-02-03 14:03:34

标签: php mysql arrays string

如果我有以下数组$array[0] = array( "1" => bar, "2" => foo, "3" => 13546 );并且我内爆()它,返回的值将是:bar,foo,13546,它不能在mysql查询中使用...我怎样才能放置单个引用那些是字符串的值......

我尝试了几种方法(比如foreach($array as $key=>$value)检查is_numeric()$ value,检查没问题,但我不知道如何将值更改为'$ value'... )

对此有何不妥?

修改

我发现另一种方法可以帮助那些感兴趣的人:

$result[0] = array(
    "1" => bar,
    "2" => foo,
    "3" => 1232.13
);

$copy_r = $result[0];

foreach($copy_r as $key=>$value)
{
    if(!is_numeric($value))
    {
        $insert_array[] = "`$key` = '$value'";
    }
    else
    {
        $insert_array[] = "`$key` = $value";
    }
}

$final_string = implode(',', $insert_array);
$insert_q = "INSERT INTO `table_name` SET $final_string
             ON DUPLICATE KEY UPDATE ($final_string)";

5 个答案:

答案 0 :(得分:6)

同意你应该查看准备好的陈述,但要回答你原来的问题,你可以这样做:

$array=array('a', 'b', 'c');

$string = "'" . implode("','", $array) . "'";

答案 1 :(得分:5)

更好地使用准备好的查询。但只是为了乐趣:

implode(',', array_map(function($value) {
    if(!is_numeric($value)) {
        return '"' . $value . '"';
        //adds double quotes, but if you prefer single quotes, use:
        //return "'" . $value . "'";
    } else {
        return $value;
    }
}, $array[0]);

答案 2 :(得分:0)

foreach + isnumeric()可能是最好的方法。然后更改值:

$array[$key] = "'" . $value . "'";

foo/"foo"变为'foo'/"'foo'",依此类推。

答案 3 :(得分:0)

如果你使用mysql-driver:

function escape( $x ) {
 return "'" . mysql_real_escape_string($x) . "'";
}

$data = array( "1" => bar, "2" => foo, "3" => 13546 );

echo implode( ',', array_map('escape', $data) );

答案 4 :(得分:-1)

经验证的解决方案对我不起作用。必须是我正在做错的事情,但下面的解决方案对我有用,我在MYSQL IN子句中使用了结果,因为所有值都需要在该查询中以引用形式出现。

解决方案很简单,它使用引用调用来修改PHP的原始数组值和数组过滤器以循环遍历所有值。

function quote(&$a){
      $a='"'.$a.'"';
    }

    $arr= array('car','bus','truck','bike');

    array_filter( $arr,'quote');

    echo implode(',', $arr);