字符串与特定数组元素的串联

时间:2012-02-17 12:19:57

标签: php mysql

下面给出的代码将数据从数组插入mysql table.as它不是完整的代码,但我想知道的是这个代码。我的问题是表中有一个名为“image_url”的字段,但该字段中的数据只有图像名称,我想在每个图像名称的开头附加http://www.xxxxxx.com,并将其替换为图像名称该领域,但我不知道该怎么做,PLZ帮助我

提前致谢

function putTest($t) {

    //$c = connect();

    foreach ($t as $k => $v) {

         $query = "INSERT INTO test (".implode(',',array_keys($v)).") VALUES ('".implode("','",$v)."')";

         //echo "<pre>";

        // echo  $query;
        $r = mysql_query($query);

    }
    //mysql_close($c);
}

2 个答案:

答案 0 :(得分:2)

此代码段应该符合您的要求:

if (isset($v['image_url'])) {
    $v['image_url'] = 'http://www.xxxxxx.com/' . $v['image_url'];
}

您可以使用点“.”连接字符串!

答案 1 :(得分:1)

首先......您的应用程序是否受到SQL injection的保护?如果不是,您应该使用mysql_real_escape_string()构建两个这样的方法/函数:

function sqlSafeKey( $key){
    return '`' . mysql_real_escape_string( $key) . `'`;
}

function sqlSafeValue( $value){
    return "'" . mysql_real_escape_string( $value) . "'";
}

而不是使用array_map()来逃避你的价值观:

$keys = array_map( 'sqlSafeKey', array_keys( $v));
$values = array_map( 'sqlSafeValue', $v);

关于您的问题...... matzino's answer是正确的,整个循环应如下所示:

function putTest($t) {

    //$c = connect();

    foreach ($t as $k => $v) {
         $v['image_url'] = 'http://www.xxxxxx.com/' . $v['image_url'];
         $keys = array_map( 'sqlSafeKey', array_keys( $v));
         $values = array_map( 'sqlSafeValue', $v);

         $query = "INSERT INTO test (".implode(',', $keys).
                  ") VALUES ('".implode("','",$values)."')";

         //echo "<pre>";

        // echo  $query;
        $r = mysql_query($query);

    }
    //mysql_close($c);
}