将代码转换为函数,但它不起作用

时间:2013-05-23 21:38:32

标签: php mysql function

我使用此代码计算一个人在数据库中出现的次数(跨15列)。

$name = "Clint Irwin";
$query = mysqli_query($con, "
    SELECT * FROM `players` 
    WHERE MATCH (p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15)
    AGAINST ('$name' IN BOOLEAN MODE) 
    AND rank <= 1000");
$result = mysqli_num_rows($query);
echo $name.' '.$result;

这有效......但是,我想让它变得更容易,所以我可以用很多不同的名字来运行......所以我试过了......

function gw($name) 
{   
    $query = mysqli_query($con, "
        SELECT * FROM `players`
        WHERE MATCH (p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15) 
        AGAINST ('$name' IN BOOLEAN MODE)
        AND rank <= 1000");
    $result = mysqli_num_rows($query);
    echo $name.' '.$result;
}

//run it for certain person names,
gw("Clint Irwin");

它不起作用。我刚收到以下错误消息

Warning: mysqli_query() expects parameter 1 to be mysqli, null given in /Applications/XAMPP/xamppfiles/htdocs/test.com/index.php on line 19

Warning: mysqli_num_rows() expects parameter 1 to be mysqli_result, null given in /Applications/XAMPP/xamppfiles/htdocs/test.com/index.php on line 21
Clint Irwin

知道我怎么能让它运转起来吗?这似乎很容易修复,但我无法弄明白。

3 个答案:

答案 0 :(得分:6)

$ con不在函数范围内,因此您传入一个局部变量,其整数值为null。您需要将其设为全局,或将连接作为参数传递:

function gw($name) {
   global $con;
}

function gw($name, $con) {
}

gw('foo', $con);

答案 1 :(得分:2)

您正试图访问未在您的方法中定义的$con。你要么写

global $con;在方法的开头,或将其作为参数传递。

答案 2 :(得分:1)

变量$con超出了范围,您有几个选项,但在现代PHP中,您可以使用函数内部范围内的变量:

$gw = function($name) use ($con) {
  ...
}