Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/262.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP For循环构建插入字符串_Php_Insert_Mysqli - Fatal编程技术网

PHP For循环构建插入字符串

PHP For循环构建插入字符串,php,insert,mysqli,Php,Insert,Mysqli,我试图在数据库中插入几个值 首先,我将这些值添加到数组中(省略函数/其他代码): 像这样: $formvars = array(); array_push($formvars, $name, $email, $username, $password); 然后调用函数插入: $sql = array(); for ($i = 0; $i < count($formvars);$i++) { $sql[] = $formvars[$i];

我试图在数据库中插入几个值

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

像这样:

$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;
$sql=array();
对于($i=0;$iquery($qry))
{
echo“将数据插入表时出错\n查询:$qry”;
返回false;
}        
返回true;
我的数据库结构如下:

它给了我一个插入错误:

向表查询插入数据时出错:插入到chinesegame(名称, 电子邮件、用户名、密码) 丹,dthusky@gmail.com,danman,827ccb0eea8a706c4c34a16891f84e7b


我不能构建这样的insert字符串吗?

insert语句中似乎缺少一些内容:

$qry = 'INSERT INTO chinesegame (name, email, username, password) '. implode(',' , $sql);
尝试将insert语句更改为类似以下内容:

$qry = 'INSERT INTO chinesegame (name, email, username, password) VALUES ('. implode(',' , $sql).')';
你忘记了你的“值”关键字。括号也有帮助。您还需要将所有值都用引号括起来,以下是正确的版本:

$qry = 'INSERT INTO chinesegame (name, email, username, password) VALUES ("'. implode('","' , $sql). '")';
另外,mysqli->query首先获取一个连接变量,该变量包含到数据库的连接信息,它应该如下所示:

$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上下文中引用。你也考虑过绑定参数吗?@mario我在使用这些参数时有困难,所以我选择了真正的_escape_字符串。您能详细介绍一下SQL上下文中的字符串引号吗?是的,
mysqli
很难正确使用。退房,好的,哦,哈哈。因此,即使引号已修复,它仍会产生插入错误。在运行$qry并粘贴到此处之前,是否可以打印$qry?是否需要说明id的自动增量主键?此外,print还提供:在chinesegame(名称、电子邮件、用户名、密码)中插入值(“Dan”dthusky@gmail.com“,”danman“,”827ccb0eea8a706c4c34a16891f84e7b”)打印mysqli_错误();在返回之前,在if语句中执行查询之后。复制到这里。自动增量将自动工作,不用担心。值需要在引号中,我为您提供了上面的正确版本。
    $sql = array(); 
    for ($i = 0; $i < count($formvars);$i++) {
        $sql[] = $formvars[$i];
    }
$sql = $formvars;