在非对象上调用成员函数fetch_assoc()

时间:2010-05-15 16:04:36

标签: php

这是我的功能:

function get_fname($un){

$registerquery = $this->conn->query("SELECT f_name FROM tz_members WHERE 
                     usr='".$un."'");

while ($row = $registerquery->fetch_assoc()) { 
    return $fname = $row[$un];
    }
}

编辑:

我选择回答我自己的问题,因为它有一个编辑。

@Mark Ba​​ker:

<?php
    require_once 'Mysql.php'; 
    $mysql = new Mysql(); 

?>
<html>
  <head>
  </head>
  <body>
    <h4><?php echo $mysql->get_fname("joann"); ?></h4>
  </body>
</html>

我就是这样做的......

4 个答案:

答案 0 :(得分:3)

您的查询似乎失败了。因为在这种情况下query会返回 false 。所以试试这个:

$registerquery = $this->conn->query("SELECT f_name FROM tz_members WHERE 
                 usr='".$un."'");
if ($registerquery) {
    while ($row = $registerquery->fetch_assoc()) { 
        return $fname = $row[$un];
    }
}

$un包含破坏字符串声明的字符(如'\)时,查询中的语法错误可能导致失败。您应该使用MySQLi::real_escape_string来转义这些字符以防止这种情况发生。

此外,函数只能返回一次值。因此while将在第一行之后中止。

答案 1 :(得分:1)

$ fname = $ row [$ un];将$ row [$ un]中的值赋给变量$ fname,然后返回结果。 对$ fname执行赋值是没有意义的,因为$ fname只是函数中的局部变量....如果它被定义为全局,那么它不是很好的编程习惯。

如果echo $ mysql-&gt; get_fname(“joann”)是您调用get_fname()函数的行,那么如何设置$ mysql?

如果数据库查询找不到查询的任何有效结果,您认为会发生什么?

答案 2 :(得分:0)

while ($row = fetch_assoc($registerquery)) { 
    return $fname = $row[$un];
    }
}

答案 3 :(得分:0)

您是否可能忘记在连接中提供表名?

$ conn = new mysqli('localhost','root','password','ANY VALUE HERE ??');