PHP For循环构建插入字符串

时间:2014-01-02 01:05:54

标签: php insert mysqli

我正在尝试将多个值插入数据库。

首先我将这些值添加到数组中(省略了函数/其他代码):

$name = (isset($_POST['name']) ? ($_POST['name']) : "name");
$email = (isset($_POST['email']) ? ($_POST['email']) : "email"); 
$username = $mysqli->real_escape_string($_POST['username']);
$password = $mysqli->real_escape_string(md5($_POST['password']));

像这样:

$formvars = array();
array_push($formvars, $name, $email, $username, $password); 

然后调用函数插入:

    $sql = array(); 
        for ($i = 0; $i < count($formvars);$i++) {
            $sql[] = $formvars[$i];
        }

        print_r(implode(',', $sql));

        $qry = 'INSERT INTO chinesegame (name, email, username, password) VALUES '. implode(',' , $sql);

        if(!$mysqli->query($qry))
        {
            echo "Error inserting data to the table \nquery:$qry";
            return false;
        }        

    return true;

我的数据库结构是这样的:

enter image description here

它给了我一个插入错误:

  

将数据插入表查询时出错:INSERT INTO chinesegame(name,   邮件,用户名,密码)   丹,dthusky @ gmail.com,danman,827ccb0eea8a706c4c34a16891f84e7b

我不能像这样构建插入字符串吗?

2 个答案:

答案 0 :(得分:1)

您忘记了“VALUES”关键字。和括号也有帮助。您还需要所有值都在引号中,这是正确的版本:

$qry = 'INSERT INTO chinesegame (name, email, username, password) VALUES ("'. implode('","' , $sql). '")';

此外,mysqli-&gt;查询首先获取一个连接变量,该变量具有与数据库的连接信息,它应如下所示:

$connection = mysqli_connect("localhost","my_user","my_password","my_db");
if(!$mysqli->query($connection, $qry))

另外,为了记录,

    $sql = array(); 
    for ($i = 0; $i < count($formvars);$i++) {
        $sql[] = $formvars[$i];
    }

可以替换为

$sql = $formvars;

没有理由在整个过程中循环使用它们。

答案 1 :(得分:0)

看起来你在insert语句中遗漏了一些东西:

$qry = 'INSERT INTO chinesegame (name, email, username, password) '. implode(',' , $sql);

尝试将insert语句更改为:

$qry = 'INSERT INTO chinesegame (name, email, username, password) VALUES ('. implode(',' , $sql).')';