PDO数组INSERT

时间:2014-10-09 22:17:59

标签: php mysql arrays pdo

所以阵列出现了我想要的方式 数组的任何示例,其大小可能不同,并且具有类似'< \ /在下面

$TablesNames
Array 
( 
   [0] => SampleDate 
   [1] => LAB 
) 

$LineResults
Array 
( 
  [0] => 4/08/2014 
  [1] => Micro - Water 
)

我试图插入值

的代码摘要
$sqlTableNames = (implode(',',$TableNames));

for ($x=0; $x<$Xsize; $x++) 
{
  for($y=0;$y<$MapSize;$y++)
  {     
        $LineResults[$x][$y] = $results[$x][$map[$y]];          
  }
$sqlLineResults = (implode("','",$LineResults[$x]));

$ResultsInsert = $db->prepare("INSERT INTO samples (:TableValues) VALUES (:LineValues)");   
$ResultsInsert->bindParam(':TableValues', $sqlTableNames, PDO::PARAM_STR);
$ResultsInsert->bindParam(':LineValues', $sqlLineResults, PDO::PARAM_INT);  
$ResultsInsert->execute();

}

引发错误“......在'附近使用正确的语法'?)第1行的VALUES(?)'..”

1 个答案:

答案 0 :(得分:1)

这里有两个问题:

  • 您不能绑定表名或列名,只能绑定值;
  • 您只能绑定单个值,而不能绑定多个值的字符串。

因此VALUES子句的两边都是错误的。

您需要动态构建sql语句,单独添加键值对(或两侧的字符串)。由于您无法绑定表名和列名,因此如果输入来自访问者,则应使用白名单。