array_keys() 函数获取数组的键 return array
array_values() 函数获取数组的值 return array
通过 join() 函数可以分割数组成字符串
有如下php
代码:
$link = mysqli_connect('localhost', 'root', '123456', 'test'); $array = array( "id" => 3, "username" => 'aaaaaaa' ); $table = "t1"; // 获取字段 $keys = join(',', array_keys($array)); // 获取值 $values = join(',', array_values($array)); $sql = "INSERT {$table}($keys) VALUES({$values})"; echo $sql; $result = mysqli_query($link, $sql); var_dump($result); echo mysqli_insert_id($link);
output:
/* * output: * INSERT t1(id,username) VALUES(3,aaaaaaa) * bool(false) * 0 */
数据库结构如下:
mysql> DESC t1; +----------+-------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +----------+-------------+------+-----+---------+----------------+ | id | int(11) | NO | PRI | NULL | auto_increment | | username | varchar(50) | NO | | NULL | | +----------+-------------+------+-----+---------+----------------+ 2 rows in set (0.01 sec)
这样是插入不了数据库的,因为正确的SQL语句应该是:
INSERT t1(id,username) VALUES(3,'aaaaaaa');
而
INSERT t1(id,username) VALUES(3,aaaaaaa)
(这个 SQL insert 不进去)
请问:用以上的代码怎么只修改$sql = "INSERT {$table}($keys) VALUES({$values})";
可以得到正确的 sql 语句?
如果有更简单的方法,还望不吝赐教,谢谢
先获取表的结构:
describe table
提取出 字段名 + 字段类型 ,保存在数组中
array('field_name'=>'field_type')
传入数据,然后匹配字段名,根据匹配到的字段名,获取字段类型。
根据字段类型决定是否要添加 引号
拼接sql语句
执行sql