下面给出的代码将数据从数组插入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);
}
答案 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);
}