Въпрос за извеждане от дб

pro12

Registered
Това ми е метода за извеждане.
PHP:
public function view($pname, $tname, $where, $types, $params){       
         $bind = [];
         $bind[] = $types;
         foreach ($params as $recordkey => $recordvalue){
         $bind[] = & $params[$recordkey];    
		 }           
		   $sql = "SELECT $pname
			FROM  $tname 
			$where";
            if($pre = $this->conn->prepare($sql)){
            call_user_func_array(array($pre, 'bind_param'),$bind); 
                $pre->execute();
                $result = $pre->get_result();
                }
                return $result;
          $this->conn->close();

	  }
Работи без проблем като и 5 те променливи имат стойност, но понякога тези две променливи $types, $params и не им подавам стойности пак извежда от дб, но на тези редове дава грешки $bind[] = $types; и call_user_func_array(array($pre, 'bind_param'),$bind);
Как да направя така че да работи метода без да имат стойности на тези променливи $types, $params ? Или да си направя още един метод за извеждаме?
 
Има няколко начина, може би най-лесният, за който се сещам е да ги дефинираш като параметри съсстойност по подразбиране или не задължителни параметри на метода/фунцкията.

Пример:
PHP:
public function view($pname, $tname, $where, $types=null, $params=null){

Понякога както в твоя случай ще се наложи долу в кода да направиш проверка ако тези или други ключови параметри са ти дефаултовите стойности да посмени малко заявката :) Дано ме разбра. Мързи ме да пиша код, предполагам някой от колегите ще ти доизясни какво искам да кажа и ще ти даде примерен код :)

За сега ето няколко добри ресурса, които са повече от ясно обяснени :)

- http://php.net/manual/bg/functions.arguments.php
- http://stackoverflow.com/questions/9166914/using-default-arguments-in-a-function
- http://stackoverflow.com/questions/1066625/how-would-i-skip-optional-arguments-in-a-function-call
 
Аз лично изобщо не разбирам какво се опитваш да направиш. Може би както винаги казва колегата @joTunkiq трябва да обясниш по-подробно и може някой да ти помогне. Само да добавя че кода след ключовата дума return няма да се изпълни.
 
Благодаря joTunkiq за идеята справих се! Как да прекъсна връзката с дб щом след return не се изпълнява кода?
 
Прекъсваш я преди return-а. Той трябва да ти е винаги последния ред във кода. Това е все едно да напишеш exit;.
 
Еми не знам тогава. Този ред така или иначе не ти се изпълнява. Може да пробваш с деструктор. Според мен да прекъсваш връзката по принцип не е много добра идея, защото при всяка заявка трябва да правиш нова връзка, а това си отнема ресурс.
 
И аз тъкмо си мислех да пробвам с деструктор. Аз съм чул, че е добре да се прекъсва връзката с дб.
 
Не знам къде си го чувал, но аз знам че конекцията е едно от нещата което, използва най много ресурс и е най-бавно. Ако за всяка заявка правиш нова конекция ще си забавиш сайта значително. Евентуално ако се затваря конекцията то трябва де е в края на приложението.
 

Back
Горе