我希望创建一个动态SQL,其中字符串变量的值用作SQL字符串中的变量:
"INSERT INTO `product` (`id`,`number`) VALUES (NULL,'1234');"
这很有效。
然而,我需要做的是拥有"变量"?
早在代码中:
foreach($array as $val)
{
$s .= ',"$val"[$i]';
}
这会创建字符串:
s = ,'$val[0]','$val[1]'
作为SQL字符串插入时:
"INSERT INTO `product` (`id`,`number`) VALUES (NULL,$s);"
它返回:
"INSERT INTO `product` (`id`,`number`) VALUES (NULL,'$val[0]','$val[1]');"
它应该返回:
"INSERT INTO `product` (`id`,`number`) VALUES (NULL,'12','34');"
这是非常直接的,因为MySQL插入是循环的,其中$ val是数组值而[0]是键。
我不确定这是否对任何人都有意义,因为我正在努力绕过它,请让我知道我的问题是模糊还是没有任何意义一点都不。
由于
尼克
答案 0 :(得分:1)
您正在使用单引号,因此不会进行字符串插值,如果您想要插入字符串,则必须使用双引号"$var"
:
$arr = array( 1,2,3);
$i = 0;
echo '$arr[0]'; // prints: $arr[0] <== Your error is here
echo "$arr[0]"; // prints: 1
无论如何,你可能喜欢这样做:
$array = array(12, 34);
$s = implode("', '", $array); // $s is: 12', '34
$s = ", '$s'"; // $s is: '12', '34'
echo $s; // prints: , '12', '34'
答案 1 :(得分:0)
使用你的代码我认为这是你想要做的,但正如我所说,你缺少属性。
$s="";
$array = array("12","34");
for($i =0; $i < count($array); $i++)
{
$s .= ",'" . $array[$i] . "'";
}
$sql = "INSERT INTO `product` (`id`,`number`) VALUES (NULL$s);";
答案 2 :(得分:0)
从我的问题中我可以理解,这可能有助于您实现所需的目标。
在foreach循环中,您正在使用
$s .= ',"$val"[$i]';
$ val没有以正确的方式连接
尝试这个
$s .= ','.$val[$i];
您可以使用implode函数
拆分数组中的值例如: $ array [] = 12; $ array [] = 31;
implode(&#39;,&#39; $ array)返回12,31
因此您可以使用$s = ','.implode(','$array);
来获得相同的结果