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;