Mudei e fiz assim, agora: if ($_POST['cs']) {
$cs = 'cs = ' . $_POST['cs'];
}
if ($_POST['estante']) {
if ($_POST['cs']) {
$estante = ' AND estante = ' .$_POST['estante'];
}
else {
$estante = 'estante = ' . $_POST['estante'];
}
}
if ($_POST['prateleira']) {
if ($_POST['cs'] || $_POST['estante']) {
$prateleira = ' AND prateleira = ' .$_POST['prateleira'];
}
else {
$prateleira = 'prateleira = ' . $_POST['prateleira'];
}
}
if ($_POST['numero']) {
if ($_POST['cs'] || $_POST['estante'] || $_POST['prateleira']) {
$numero = ' AND numero = ' .$_POST['numero'];
}
else {
$numero = 'numero = ' . $_POST['numero'];
}
}
if ($_POST['digito']) {
if ($_POST['cs'] || $_POST['estante'] || $_POST['prateleira'] || $_POST['numero']) {
$digito = ' AND digito = ' .$_POST['digito'];
}
else {
$digito = 'digito = ' . $_POST['digito'];
}
}
$sql = "SELECT * FROM carga WHERE $cs $estante $prateleira $numero $digito";
O problema é que a função que eu uso para facilitar a consulta ao banco de dados
$sql = "SELECT * FROM carga WHERE $cs $estante $prateleira $numero $digito";
$consulta = execSQL("$sql", array (), false);
está dando erro
Warning: Wrong parameter count for mysqli_stmt::bind_param() in /var/www/html/inc/func.php on line 26
Função
/*
Usage:
execSQL($sql, $parameters, $close);
$sql = Statement to execute;
$parameters = array of type and values of the parameters (if any)
$close = true to close $stmt (in inserts) false to return an array with the values;
Examples:
execSQL("SELECT * FROM table WHERE id = ?", array('i', $id), false);
execSQL("SELECT * FROM table", array(), false);
execSQL("INSERT INTO table(id, name) VALUES (?,?)", array('ss', $id, $name), true);
*/
function execSQL($sql, $params, $close){
$mysqli = new mysqli("localhost", "root", "supersenha", "superbanco");
$stmt = $mysqli->prepare($sql) or die ("Failed to prepared the statement!");
call_user_func_array(array($stmt, 'bind_param'), refValues($params)); // Linha 26
$stmt->execute();
if($close){
$result = $mysqli->affected_rows;
} else {
$meta = $stmt->result_metadata();
while ( $field = $meta->fetch_field() ) {
$parameters[] = &$row[$field->name];
}
call_user_func_array(array($stmt, 'bind_result'), refValues($parameters));
while ( $stmt->fetch() ) {
$x = array();
foreach( $row as $key => $val ) {
$x[$key] = $val;
}
$results[] = $x;
}
$result = $results;
}
$stmt->close();
$mysqli->close();
return $result;
}
function refValues($arr){
//Reference is required for PHP 5.3+
if (strnatcmp(phpversion(),'5.3') >= 0) {
$refs = array();
foreach($arr as $key => $value)
$refs[$key] = &$arr[$key];
return $refs;
}
return $arr;
}