答案 0 :(得分:0)
如果每个选择都是多个,则可以为每个选择使用一个数组,并用逗号分隔。 例子
var array;
array['AreaNegocio' ] = "1, 3, 5";
array['CentroDeCosto'] = "21, 35, 500";
array['GrupoDeCuenta'] = "20, 51, 123";
当您在后端收到请求时,可以检查哪个参数。
示例:
if (isset($param['AreaNegocio']) {
$query .= " AND column IN ('".$param['AreaNegocio']."')";
}
以此类推
答案 1 :(得分:-1)
目前尚不清楚要实现的目标。您有3个html select标签,但您想创建一个从一个表中选择的stmt?
<?php
define('SERVER', "localhost");
define('DB_USER', "root");
define('PASSWORD', "");
define('DATABASE', "jcalendar");
$vals = array(
filter_input(INPUT_GET,'selectField1'), // col1 - id
filter_input(INPUT_GET,'selectField2'), // col2 - date
filter_input(INPUT_GET,'selectField3'), // col3 - time
);
$query = "SELECT * from bookings";
if($vals[0]||$vals[1]||$vals[2])
{
// Create connection
$mysqli = new mysqli(SERVER, DB_USER, PASSWORD, DATABASE);
// Check connection
if ($mysqli->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
if($vals[0] && !$vals[1] && !$vals[2]){
$stmt = $mysqli->prepare($query." WHERE id= ? ");
if(!$stmt->bind_param("s",$vals[0])) exit();
}elseif($vals[0] && $vals[1] && !$vals[2]){
$stmt = $mysqli->prepare($query." WHERE id=? AND date=?");
if(!$stmt->bind_param("ss",$vals[0],$vals[1])) exit();
}elseif($vals[0] && !$vals[1] && $vals[2]){
$stmt = $mysqli->prepare($query." WHERE id=? AND time=?");
if(!$stmt->bind_param("ss",$vals[0],$vals[2])) exit();
}elseif(!$vals[0] && $vals[1] && !$vals[2]){
$stmt = $mysqli->prepare($query." WHERE date= ? ");
if(!$stmt->bind_param('s',$vals[1])) exit();
} // and so one a lot of dublicated code
// ...
$result = $stmt->execute();
// do smth
$stmt->close();
$mysqli->close();
}
else
{
exit();
}
我使用GET变量进行调试,当然可以使用post方法。只需将INPUT_GET更改为INPUT_POST
编辑:注意,我必须为列和表选择具体的名称,否则$ mysqli_prepare()将返回false,这将导致错误,因为$ stmt-> bind_param将在布尔值上调用。您可能应该考虑这种情况。您还应该关闭数据库和stmt。