Wątek przeniesiony 2015-11-18 15:39 z PHP przez dzek69.

Błąd "real_escape_string" przy zapytaniu SQL

0

Witam,

Mam następujący problem. Próbuję odczytać zawartość bazy i wypisać na ekranie w postaci zwykłej tablicy. Przeglądarka mówi o błędzie: Fatal error: Call to a member function real_escape_string() on string in C:\xampp\htdocs\test\DBConnect\DatabaseManager.class.php on line 26

Oto cały kod:

config.php

<?php


define ('DB_SERVER', 'localhost');
define ('DB_USERNAME', 'root');
define ('DB_PW', '');
define ('DB_DB', 'supercms');


?>
 

DatabaseManager.class.php

 
<?php

class DatabaseManager
{
	static public function getConnection()
	{
		$connect = @new mysqli(DB_SERVER, DB_USERNAME, DB_PW, DB_DB);
		
		if(mysqli_connect_errno())
		{
			$connect_errno = mysqli_connect_errno();
			$connect_error = mysqli_connect_error();
			
			return "Cos zjeb... [".$connect_errno."] $connect_error";
		}
		else
		{
			$connect->query("SET NAMES 'utf8'");
			return "Połączono z bazą";
		}
	}
	
	static public function selectBySQL($SQL)
	{
		$connect = self::getConnection();
		$SQL = $connect->real_escape_string($SQL);
		$result = $connect->query($SQL);
		
		if(!$result)
		{
			echo "Wystąpił błąd";
			return false;
		}
		else
		{
			$resultArray = Array();
				while(($row = $result->fetch_array(MYSQLI_ASSOC)) !== NULL)
				{
					$resultArray[] = $row;
				}
		}
		
		if(count($resultArray) > 0)
		{
			return $resultArray;
		}
		else
		{
			echo "Znowu zje...";
		}
		
		mysqli_close($connect);
		
	}
}

?>

index.php

 <?php

require_once("config.php");
require_once("DatabaseManager.class.php");

echo print_r(DatabaseManager::selectBySQL("SELECT * FROM users"));
?>

Nie wiem za bardzo jak sobie z tym błędem poradzić... Funkcja getConnection działa bez problemu. Czy może ktoś wie gdzie tkwi błąd?

1

Przecież ty w swoim getConnection nie zwracasz obiektu połączenia, tylko string informujący czy jest ok czy nie. Następnie na tym stringu próbujesz wykonać funkcję.

Co zresztą jasno opisuje treść błędu.

0

Dzięki, śmiga :) Zamieniłem

return "Połączono z bazą"; 

na return $connect

1 użytkowników online, w tym zalogowanych: 0, gości: 1