使用单个查询绑定多个值上的param用法

时间:2014-05-08 14:06:26

标签: mysql sql database mysqli

$stmt2 = $db->prepare("INSERT INTO friend(`uId`,`friendId`) VALUES (?,?), VALUES(?,?)");
$stmt2->bind_param('ssss', $userId,$friendId,$friendId,$userId);

我希望它会在结果中插入2行

uId friendId
1    2
2    1

但它返回对非对象

上的成员函数bind_param()的调用

2 个答案:

答案 0 :(得分:0)

INSERT只接受一个VALUES子句,即使VALUES子句包含多个元组。

INSERT INTO friend(`uId`,`friendId`) VALUES (?,?), (?,?)

但更重要的是,您应始终检查prepare()的返回值,因为如果查询中出现错误,则返回 false 。当然,你不能在假值上调用bind_param()方法,因为false根本不是具有方法的对象。

答案 1 :(得分:0)

试试这个

$a = '';
$b = '';

$stmt2 = $db->prepare("INSERT INTO friend(`uId`,`friendId`) VALUES (?,?)");
$stmt2->bind_param('ss', $a, $b);

$a = $userId;
$b = $friendId;
$stmt2->execute();

$a = $friendId;
$b = $userId;
$stmt2->execute();