您可以为这样的类型执行此操作:$stmt->bind_param($var1.'ii', ...)
但不能用于参数,因为它必须通过引用传递。但是有解决方法。您可以在文档注释中找到它:mysqli-stmt.bind-param
它使用参考类:
$ref = new ReflectionClass('mysqli_stmt');
$method = $ref->getMethod("bind_param");
$method->invokeArgs($stmt, $args);
$res->execute();
$args
包含所有类型和参数的数组在哪里。对于您的示例:
$args[] = 'sssii';
$args[] = $variable1;
$args[] = $variable2;
(...)
$args[] = $startpoint;
$args[] = $limit;
如果您有这样的数据,您value1, value2, value3
可以尝试使用.explode
array_merge
$args
$foo1 = 'bar1';
$foo2 = 'bar2';
$foo3 = 'bar3';
$foo4 = 'bar4';
$limit = 10;
$stmt->prepare('SELECT * FROM example_table WHERE col1=? AND col2=? AND col3=? AND col4=? LIMIT ?');
$args[] = 'ssssi';
$args[] = $foo1;
$args[] = $foo2;
$args[] = $foo3;
$args[] = $foo4;
$ref = new ReflectionClass('mysqli_stmt');
$method = $ref->getMethod('bind_param');
$method->invokeArgs($stmt, $args);
$res->execute();
查询将如下所示:
SELECT * FROM example_table WHERE col1="bar1" AND col2="bar2" AND col3="bar3" AND col4="bar4"