变量字符串连接和插值,字符串存储在数组中

时间:2014-11-18 18:12:39

标签: php sql arrays variables insert

我希望创建一个动态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]是键。

我不确定这是否对任何人都有意义,因为我正在努力绕过它,请让我知道我的问题是模糊还是没有任何意义一点都不。

由于

尼克

3 个答案:

答案 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);来获得相同的结果