У меня проблема с размещением mysql в функции showMsg (). Mysql отлично работает, если он не завершен функцией showMsg (), но когда я обертываю его функцией showMsg (), он выдает сообщение об ошибке «Warning: mysql_query (): предоставленный аргумент недействителен». Как поместить mysql внутри php-функции? Ниже приведены мои коды:
<?php function showMsg(){ $query2 = "SELECT id, message, username, datetime FROM messageslive ORDER BY id DESC LIMIT 20"; $result2 = mysql_query($query2,$connection) or die (mysql_error()); confirm_query($result2); $num = mysql_num_rows($result2); while($msginfo = mysql_fetch_array($result2)){ echo $msginfo['message']; echo $msginfo['username']; } } <div> <?php showMsg(); ?> </div> ?> Вероятно, вам нужно:
 global $connection; 
(Внутри функции, то есть.)
  См. Variable Scope 
  Никогда не используйте global . 
  Передайте $connection в свою функцию в качестве аргумента. 
  Логика и представление должны быть разделены. 
  Читайте о MVC: здесь или здесь . 
Глобальные переменные являются злыми, никогда не используют его. Если кто-то подскажет это – проигнорируйте все их ответы.
  Как отмечалось выше, проблема связана с переменным охватом.  Вместо добавления global $connection;  вы могли бы рассмотреть более подход ООП и рассмотреть: 
A: передача переменной $ connection в функцию.
B: размещение связанных функций в классе и передача DB-соединения в конструктор класса. например:
 class YourClass { private $connection; public function __construct($connection) { $this->connection = $connection; } public function showMsg(){ $query2 = "SELECT id, message, username, datetime FROM messageslive ORDER BY id DESC LIMIT 20"; $result2 = mysql_query($query2,$this->connection) or die (mysql_error()); confirm_query($result2); $num = mysql_num_rows($result2); while($msginfo = mysql_fetch_array($result2)){ echo $msginfo['message']; echo $msginfo['username']; } } } 
У меня недостаточно комментариев для комментариев. Но мне также нравится ответ OZ_ 🙂
  $connection не имеет назначенного значения.  Следующий код должен решить вашу проблему (добавьте его в начале функции): 
 global $connection; 
Но вы должны знать о том, что использование глобальных переменных не является хорошей идеей, и вы можете:
$connection в параметре функции или $connection извне функции только в функцию (если это не вызывает дополнительных проблем) или $connection в функции (опять же: если это не вызовет дополнительных проблем), Поскольку переменные являются локальными для функций. Вы должны добавить это в свою функцию:
 global $connection; 
  Проще говоря, функции игнорируют внешние переменные из-за переменной области .  Вы должны позволить объявлять переменную как находящуюся извне, используя global или вы можете отправить $connection через параметр.