php mysql insert数组_PHP – MySQL编写的INSERT数组语句

不……由于mysqli_stmt_bind_param()的工作方式,这绝对比任何阵列的PDO更难……这可以通过更改$array来删除/添加其他列的数据来正常工作.

$mysqli = new mysqli('localhost', 'root', 'password', 'test');

$array = array("name"=>"pineapple", "color"=>"purple");

$table_name = "fruit";

insert_data($mysqli, $array, $table_name);

function insert_data($mysqli, $array, $table_name)

{

$placeholders = array_fill(0, count($array), '?');

$keys = array();

$values = array();

foreach($array as $k => $v) {

$keys[] = $k;

$values[] = !empty($v) ? $v : null;

}

$query = "insert into $table_name ".

'('.implode(', ', $keys).') values '.

'('.implode(', ', $placeholders).'); ';

// insert into fruit (name, color) values (?, ?);

$stmt = $mysqli->prepare($query);

// create a by reference array...

$params = array();

foreach ($array as &$value) {

$params[] = &$value;

}

$types = array(str_repeat('s', count($params)));

$values = array_merge($types, $params);

/*

$values = Array

(

[0] => ss

[1] => pineapple

[2] => purple

)

*/

call_user_func_array(array($stmt, 'bind_param'), $values);

$success = $stmt->execute();

if ($success) { print "it worked..."; }

else { print "it did not work..."; }

}

所以……在$stmt-> bind_param()中,第一个参数是一个字符串,每个传入的参数都有一个char.而char表示参数数据类型.在上面的示例中,两个参数都是字符串,因此它变为ss.上面的示例中也总是假设一个字符串.

我在bind_param()文档中找到了这个图表:

类型

包含一个或多个字符的字符串,用于指定相应绑定变量的类型:

Type specification chars

Character Description

i corresponding variable has type integer

d corresponding variable has type double

s corresponding variable has type string

b corresponding variable is a blob and will be sent in packets

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值