Mysql查询变量内部函数


Mysql query variable inside function

<?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);连接我的数据库,但它肯定是连接的,因为我可以查询它不使用函数。

<?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 } ?>

$sql不存在于函数的作用域中。您需要将$sql传递给函数,避免使用全局变量。读入变量范围

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);