2013-09-03 1 views
1

Я работаю над функцией, которая возвращает, существует ли таблица или нет.PHP: попытка получить свойство не-объекта

Но он всегда замечает:

Notice: Trying to get property of non-object [...] on line 10 

в

1 function table_exists($table) { 
2  
3  // get the database 
4  global $mysqli; 
5  
6  // look for tables named $table 
7  $result = $mysqli->query("SHOW TABLES LIKE $table"); 
8  
9  // if the result has more than 0 rows 
10  if($result->num_rows > 0) { 
11   return true; 
12  } else { 
13   return false; 
14  } 
15 } 

за $ MySQLi вар устанавливается следующим образом:

$mysqli = new mysqli(mysqli_host, mysqli_user, mysqli_password, mysqli_database); 

Как решить это?

+0

Зачем вам такая функция? Ты уже не знаешь свои столы? –

+0

Вы действительно хотите увидеть, существует ли таблица? или вы имеете в виду, имеет ли таблица данные в нем? Использование num строк не способ увидеть, существует ли таблица – tommyd456

+1

, вы можете изменить «if ($ result-> num_rows> 0)« to »if ($ result && $ result-> num_rows> 0)« – Scott

ответ

0

Я упустил цитаты.

$result = $mysqli->query("SHOW TABLES LIKE \"$table\""); 

или

$result = $mysqli->query("SHOW TABLES LIKE '$table'"); 

или

$result = $mysqli->query("SHOW TABLES LIKE \"" . $table . "\""); 

или

$result = $mysqli->query("SHOW TABLES LIKE '" . $table . "'"); 

спасибо за вашу помощь.

1

Ваш синтаксис SQL неверен. Проверьте значение переменной $ table. У вас должно быть что-то вроде

SHOW TABLES LIKE "%" 
+0

что не так с ответом? – Flavio

+0

Я не являюсь downvoter, но% не является регулярным выражением, и этот код вернет все таблицы, а не только тот, который ищет пользователь. – Orangepill

+0

Ну конечно, я мог бы использовать «.». или «*» для чего важно ... Это просто подстановочный знак, который я использовал вместо таблицы $ ... Если $ table =%, он получит список всех таблиц, если $ table = все, что он получит только эту таблицу Ok nvm ... – Flavio