Выбивает ошибку в bind_param, указывая на то, что не верно указанны типы Warning: mysqli_stmt::bind_param(): Invalid type or no types specified in C:\OpenServer\domains\new.wm\core\classes\db.php on line 19
ОБСУЖДЕНИЕ
bind_param в mysqli
вот собственно сам кусок кода
<?
public function query($string, $value='', $type='') {
$stmt = $this -> db -> prepare($string);
$stmt -> bind_param($type, $value);
return $stmt -> execute();
}
?>
=''? серьезно?))
мб =null?
мб =null?
$stmt = $mysqli->prepare("SELECT * FROM `table` WHERE (`id`=?)");
$stmt->bind_param('d', 1);
"=" ну это на случай если мне нужны пустые параметры, т.е. скажем SELECT * FROM user. А если у меня не одно значение передается? тогда такая конструкция не подойдет
пустое поле будет))
или проверяй is_null
или проверяй is_null
к сожалению ошибка сохранилась
LVC2, кинь сам запрос, который ты юзаешь.
запрос самый простой
<?
$user = $db -> query("SELECT `name`,`login` FROM `user`",'','');
?>
public function query($sql,$type=null,$value=null)
{
$stmt = $this -> db -> prepare($string);
if( ! is_null($type) AND ! is_null($value))
$stmt -> bind_param($type, $value);
return $stmt -> execute();
}
Без бинда
$user = $db -> query("SELECT `name`,`login` FROM `user`");
С биндом
$user = $db -> query("SELECT `name`,`login` FROM `user` WHERE (`id`=?)",'d',1);
Только я вот что не могу понять) Зачем создавать класс для уже готового класса?))
3KZO, в данный момент у меня именно такой код. но ругается на mysqli_stmt::bind_param()
что бы при каждом запросе не городить велосипед, а просто query($sql) и все
LVC2, в майсикьюли есть метод query..)
3KZO, вот полностью класс
<?
class db {
public $db;
private function __clone () {}
public function __construct(){
if(!$this -> db) {
$this -> db = new mysqli('localhost', 'root', '', 'new');
$this -> db -> query("SET NAMES 'utf8'");
if ($this -> db -> connect_error) {
printf("Ошибка подключения %s\n" , $this -> db -> connect_error);
}
}else $this -> db;
}
public function query($string, $value=null, $type=null) {
$stmt = $this -> db -> prepare($string);
if(!is_null($type) && !is_null($value)) $stmt -> bind_param($type, $value);
return $stmt -> execute();
}
public function queryFetch($string, $value = '') {
$stmt = $this -> query($string, $value);
return $stmt -> fetch;
}
public function queryResult($string, $value = '') {
$stmt = $this -> query($string, $value);
return $result -> num_rows;
}
public function res($string) {
return $this -> db -> real_escape_string($string);
}
public function insertId() {
return $this -> db -> insert_id;
}
function __destruct() {
$this -> db = false;
}
}
?>
3KZO, есть то он есть, но если использовать без подготовленных выражений, т.е. обычным методом, то ошибок не возникает
LVC2, ужасный класс
при смене названия функции query ошибка не исчезает
ты запрос сам смени))
3KZO, класс как класс, запросы менялись тоже