2015-05-31 3 views
-1
<?php 

function get_msg($c_id_fk) { 

    $messages = $sql->query("SELECT * FROM conversation_reply WHERE c_id_fk = $c_id_fk"); 

    return $messages; 

} 

?> 

Как запросить базу данных mysql, используя переменную внутри функции. Я использую $ sql = new MySQLi ($ host, $ username, $ password, $ database); для подключения моей базы данных, но она определенно связана, потому что я могу запросить ее без использования функций.Внутренняя функция запроса Mysql

<?php $messages = get_msg(1); 
        foreach ($messages as $message) { 
      ?> 

      <!-- Individual Message --> 
      <div class="bubble <?php 
        if ($message['user_id_fk'] == $uid) { 
         echo "from-me"; 
        } 
        else { 
         echo "from-them"; 
        }?>"> 

       <?php echo $message['c_id_fk'];?><?php echo $message['user_id_fk'];?><?php echo $message['reply'];?> 
      </div> 

      <!-- End Individual Message --> 
      <div class="clear"></div> 
      <?php } ?> 
+1

исследований [переменная сфера] (http://php.net/manual/en/language.variables.scope.php) – Devon

ответ

2

$sql не существует в области функций. Вам необходимо передать $sql функции, не используя глобальные переменные. Читать в variable scope.

function get_msg($sql, $c_id_fk) { 

    // Protect against injections 
    $c_id_fk = (int) $c_id_fk; 

    $messages = $sql->query("SELECT * FROM conversation_reply WHERE c_id_fk = $c_id_fk"); 

    return $messages; 

} 

get_msg($sql, 1); 
+0

или может быть использован класс базы данных, как [Синглтон шаблон] (HTTP: // EN .wikipedia.org/wiki/Singleton_pattern) и захватить его, где ему когда-либо понадобится: $ db = DBSource :: getInstance(); ' –

Смежные вопросы