从数组MySQL和PHP构建插入查询

Dav*_*ave 4 php mysql arrays key-value

我正在用PHP编写一个小型Web服务,我在以下场景中遇到了一些麻烦.

我的计划是能够将一个数据数组发送到一个函数,然后该函数将构建一个MySQL运行查询.在数组中,我计划将键作为列名,并将值作为列中的值...即

$myData = array('userName'=>'foo','passWord'=>'bar');
$myClass = new users();

$myClass->addUser($myData);
Run Code Online (Sandbox Code Playgroud)

然后,在我的功能中,我目前有:

function addUser($usrData){
   foreach($usrData as $col => $val){

      // This is where I'm stuck..

   }
}
Run Code Online (Sandbox Code Playgroud)

基本上,我想知道如何分离键和值,以便我的查询将成为:

INSERT INTO `myTable` (`userName`,`passWord`) VALUES ('foo','bar');
Run Code Online (Sandbox Code Playgroud)

我知道我可能做的事情如下:

function addUser($usrData){
   foreach($usrData as $col => $val){
      $cols .= "," . $col;
      $values .= ",'".$val."'";
   }
}
Run Code Online (Sandbox Code Playgroud)

但我认为可能会有更优雅的解决方案.

这可能是非常简单的事情,但我以前从未遇到过这种情况,所以我会感激任何帮助和方向.

谢谢,

戴夫

Mat*_*ley 8

试试这个:

function addUser($usrData) {
   $count = 0;
   $fields = '';

   foreach($usrData as $col => $val) {
      if ($count++ != 0) $fields .= ', ';
      $col = mysql_real_escape_string($col);
      $val = mysql_real_escape_string($val);
      $fields .= "`$col` = $val";
   }

   $query = "INSERT INTO `myTable` SET $fields;";
}
Run Code Online (Sandbox Code Playgroud)