Mysql通过函数INSERTing数据

时间:2016-09-15 14:48:13

标签: php mysql

$con = mysqli_connect('localhost','root','',"z_db_test");
$tablename = 'test';
$about = 'Some info';
$firstname = 'Doe';
$lastname = 'Joe';  

$datas = array('about'=>$about,'firstname'=>$firstname,'lastname'=>$lastname);

function addeverything($tablename,$datas)
{
    $keys= array_keys($datas);
    $insert = "INSERT INTO ".$tablename."
   ('`'.implode('`,`', $keys).'`')
    VALUES("        '
    ".implode("
    ','
    ", $datas)."
    '
    ") ";

    return mysqli_query($insert);
}

addeverything('test',array('about'=>$about,'firstname'=>$firstname,'lastname'=>$lastname));

所以我得到了错误

  

解析错误:语法错误,意外'" .implode("''(T_CONSTANT_ENCAPSED_STRING)在C:\ xampp \ htdocs \ test \中第20行的index.php

如何解决错误?

1 个答案:

答案 0 :(得分:0)

这些错误表明你错过了一个“或者某个地方的错误。这是一个过于复杂的陈述,试着简化它。

你可以这样做。

function enquote($val){return sprintf("`%s`", $val);};

 $insert = "INSERT INTO ". $tablename ."( ". implode(',', $keys ) ." ) 
            VALUES ( ". implode(",", array_map( "enquote", $datas )) .")";

enquote函数将在所有引用它们的值周围添加`。

此查询不是SQL注入证明,因此请注意。