Доброг8о времени! У меня не работает sql запрос находящийся в теле функции php
вот собственно функция
function getscene($id) {
$fdb = new mysqli($gwedbhost,$gwedbuser,$gwedbpass,$gwedbname);
$fdb->set_charset("utf8");
$tmpsc = $fdb->query("SELECT * FROM screnstauns WHERE id='$id'");
$numsc = $tmpsc->num_rows;
$res = $numsc;
mysqli_close($fdb);
return $res;
}
запускаю так
$sceneattr = getscene('40');
echo $sceneattr;
ничего не выдает - пустой результат при том если запускаю без всякой функции так
$fdb = new mysqli($gwedbhost,$gwedbuser,$gwedbpass,$gwedbname);
$fdb->set_charset("utf8");
$tmpsc = $fdb->query("SELECT * FROM screnstauns WHERE id='40'");
$numsc = $tmpsc->num_rows;
echo $numsc;
mysqli_close($fdb);
то все работает нормально выдает количество строк. Подскажите что тут конфликтует в функции, может я не правильно запрос создаю?
Внутри функции вы при подключении берете данные из переменных которых внутри функции нет:
function getscene($id) {
$fdb = new mysqli($gwedbhost,$gwedbuser,$gwedbpass,$gwedbname);
Вариантов несколько я вижу:
Передавать все переменные $gwedbhost,$gwedbuser,$gwedbpass,$gwedbname
в функцию что не очень красиво.
Подключаться где то за пределами функции и передавать в функцию уже переменную $fdb
Попробуйте вот так
function getscene($id) {
$fdb = new mysqli(&$gwedbhost,&$gwedbuser,&$gwedbpass,&$gwedbname);
$fdb->set_charset("utf8");
$tmpsc = $fdb->query("SELECT * FROM screnstauns WHERE id='$id'");
$numsc = $tmpsc->num_rows;
$res = $numsc;
mysqli_close($fdb);
return $res;
}
Но я бы сделал немного по-другому Нарпимер
abstract class BaseSql{//должен быть переопределен
public $mySqli;//объект по работе с базой данных
public function Select($sql){
$result=$this->mySqli->query($sql); //обратная сортировка - необходима для корректной работы парсера
$arr=array();
if(sizeof($result)>0) while($row=$result->fetch_assoc()) $arr[]=$row;
//else echo'Ошибка: запрос '.$sql.' имеет пустое значение';
return $arr;
}
protected function ConnectToBase($server,$user,$password,$db){
@$mysqli = new mysqli($server, $user, $password, $db);
@$mysqli->set_charset('utf8');
// проверка соединения
if ($mysqli->connect_errno) {
printf("Не удалось подключиться к базе: %s\n", $mysqli->connect_error);
exit();
}
$this->mySqli=$mysqli;
$this->setSettings();
}
public function LastId(){//возвращает последний id автоматически сгенерированный
return $this->mySqli->insert_id;
}
protected function setSettings(){//позволяет отдавать больлшие обьемы текста функцией GROUP_CONCAT
$this->mySqli->query('SET group_concat_max_len = 5000000;');
}
public function close(){
mysqli_close($this->mySqli);
}
}
class db extends BaseSql{
function __construct(){
$server='';
$user='';
$password='';
$db='';
$this->ConnectToBase($server,$user,$password,$db);
}
}
class fdb extends db{
public function getscene($id){
return $this->Select('SELECT * FROM screnstauns WHERE id=\''.$id.'\'');
}
}
$db=new fdb();
print_r($db->getscene(40));
$db->close();
в классе db пропишите доступы
Оборудование для ресторана: новинки профессиональной кухонной техники
Частный дом престарелых в Киеве: комфорт, забота и профессиональный уход
Допустим при добавлении нового товара был добавлен некоторым товарам атрибут "gender"На странице категорий есть список select, в котором можно...
ЗдравствуйтеЕсть скрипт, который находит нужные строки, после он должен найти каждую совпавшую строку в тексте, и в случае нахождения - заменить...
Зачем нужно делать ограничение количества попыток входа в аккаунт, которое дополнительно нагружает систему (пусть и слегка), если можно просто...