ОБСУЖДЕНИЕ

bind_param в mysqli

20 сообщений0 просмотровОткрыта
#1
Выбивает ошибку в 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
#2
вот собственно сам кусок кода
PHP

<?
public function query($string, $value='', $type='') {
$stmt = $this -> db -> prepare($string); 
$stmt -> bind_param($type, $value);
return $stmt -> execute();
}
?>
#3
=''? серьезно?))

мб =null?
#4
PHP


$stmt = $mysqli->prepare("SELECT * FROM `table` WHERE (`id`=?)");
$stmt->bind_param('d', 1);


#5
"=" ну это на случай если мне нужны пустые параметры, т.е. скажем SELECT * FROM user. А если у меня не одно значение передается? тогда такая конструкция не подойдет
#6
пустое поле будет))
или проверяй is_null
#7
к сожалению ошибка сохранилась
#8
LVC2, кинь сам запрос, который ты юзаешь.
#9
запрос самый простой
PHP

<?
$user = $db -> query("SELECT `name`,`login` FROM `user`",'','');
?>
#10
PHP


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();

}




Без бинда
PHP

$user = $db -> query("SELECT `name`,`login` FROM `user`");



С биндом
PHP

$user = $db -> query("SELECT `name`,`login` FROM `user` WHERE (`id`=?)",'d',1);

#11
Только я вот что не могу понять) Зачем создавать класс для уже готового класса?))
#12
3KZO, в данный момент у меня именно такой код. но ругается на mysqli_stmt::bind_param()
#13
что бы при каждом запросе не городить велосипед, а просто query($sql) и все
#14
LVC2, в майсикьюли есть метод query..)
#15
3KZO, вот полностью класс
PHP

<?
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;
}
}
?>

#16
3KZO, есть то он есть, но если использовать без подготовленных выражений, т.е. обычным методом, то ошибок не возникает
#17
LVC2, ужасный класс
#18
при смене названия функции query ошибка не исчезает
#19
ты запрос сам смени))
#20
3KZO, класс как класс, запросы менялись тоже