我希望创建一个动态 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]是键。
我不确定这对任何人都有意义,因为我正在努力解决这个问题,如果我的问题含糊不清或根本没有任何意义,请告诉我。
谢谢
缺口
你使用的是单引号,所以没有进行字符串插值,如果你想插值字符串,你必须使用双引号"$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'
从我从你的问题中可以理解的,这可能有助于你实现你想要的东西。
在你正在使用的 foreach 循环上
$s .= ',"$val"[$i]';
$val未以正确的方式连接
试试这个
$s .= ','.$val[$i];
您可以使用内爆功能按 拆分数组中的值
例如: $array[] = 12; $array[] = 31;
implode(','$array) 返回 12,31
因此,您可以使用$s = ','.implode(','$array);
来获得相同的结果
使用您的代码,我认为这就是您要做的,但正如我所说,您缺少属性。
$s="";
$array = array("12","34");
for($i =0; $i < count($array); $i++)
{
$s .= ",'" . $array[$i] . "'";
}
$sql = "INSERT INTO `product` (`id`,`number`) VALUES (NULL$s);";