如何使用关联数组将数据插入MySql

H.J*_*ost 6 php mysql

我现在在关联数组中插入数据时遇到问题,其中键作为表中的字段和要插入MySql数据库的值.这是我的代码.

<?php
$table = 'articles';

$data = array(
        'title' => 'Header',
        'content' => 'This is content',
        'author' => 'James');

$keys = implode(', ', array_keys($data));
$values = implode(', ', array_values($data));

$sql = 'insert into '.$table.'('.$keys.') values ('.$values.')';

$db = new mysqli('localhost', 'root', 'root', 'blog');
$db->query($sql);
?>
Run Code Online (Sandbox Code Playgroud)

使用此代码,我无法将数据插入数据库,因此我尝试回显查询字符串,并得到如下内容:

insert into articles(title, content, author) values (Header, This is content, James)
Run Code Online (Sandbox Code Playgroud)

但是,如果我在每个值中使用单引号,就像这样

insert into articles(title, content, author) values ('Header', 'This is content', 'James')
Run Code Online (Sandbox Code Playgroud)

我可以成功地将数据插入数据库.

所以我不知道这里有什么问题.它是否是引号的问题,因为当我使用单引号时,这似乎有效.

所以请帮我找到合适的解决方案......

Jay*_*ard 7

对于查询,您需要将每个值括在引号中.要做到这一点,您可以更改您的内爆语句,以包括值周围的引号 -

$values = "'" .implode("','", array_values($data)) . "'";
Run Code Online (Sandbox Code Playgroud)

您还应该检查错误.

更换 $db->query($sql);

if(!$result = $db->query($sql)){ 

die('There was an error running the query [' . $db->error . ']'); 

}

else{
echo "Data inserted.";
}
Run Code Online (Sandbox Code Playgroud)