Грешка, която не мога да я оправя

  • Автор Автор ivo75
  • Начална дата Начална дата

ivo75

Registered
Дава ми следната грешка

Notice: Undefined variable: poracki in C:\xampp\htdocs\.......\modeli.php on line 28

Warning: mysqli_real_escape_string() expects parameter 1 to be mysqli, null given in C:\xampp\htdocs\........\modeli.php on line 28

както се вижда променливата $poracki е там, но не знам защо ми изписва, че не е там
ето кода - последният ред е 28-ми ред
Код:
$user="root";
$pass="......";
$database=".......";
$server="localhost";

$poracki = mysqli_connect($server, $user, $pass, $database);

if (!$poracki) {
die('Connect Error (' . mysqli_connect_errno() . ') '
        . mysqli_connect_error());
}

echo 'Success... ' . mysqli_get_host_info($poracki) . "\n";
  
?>
<?php
if (!function_exists("GetSQLValueString")) {
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "") 
{
  if (PHP_VERSION < 6) {
    $theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;
  }

  $theValue = function_exists("mysqli_real_escape_string") ? mysqli_real_escape_string($poracki, $theValue) : mysqli_escape_string($theValue);
 
Не можеш да използваш една локална променлива, каквато е $poracki, в тялото на дадена функция, така директно. Трябва да я направиш глобална. Или трябва да е част от $GLOBALS масива:

PHP:
$GLOBALS['poracki'] = mysqli_connect($server, $user, $pass, $database); 


function GetSQLValueString(){ 
    mysqli_real_escape_string($GLOBALS['poracki'], $theValue); 
}


Или пък трябва да я декларираш като глобална в началото на функцията:

PHP:
function GetSQLValueString(){
     global $poracki;

    mysqli_real_escape_string($poracki, $theValue); 
}

В днешно време и двата варианта не се толерират като част от best practices, в твоя случай първо трябва да си изясниш защо се налага да проверяваш дали тази функция GetSQLValueString съществува, след това можеш да предаваш $poracki като параметър на функцията.

А пък най-доброто решение в случая, е да използавш обектния модел на mysqli, като го екстенднеш и направиш тази функция като метод на твоя клас.
 

Back
Горе