为什么这个php函数导致服务器500错误?

时间:2013-03-12 03:35:45

标签: php mysql function

我正在尝试在单独的文件functions.php中实现这两个功能,并在index.php

中调用它
function is_field($column, $table, $requested) {

    $is_field_query = "SELECT ".$column." FROM ".$table." WHERE ".$column."='".$requested."'";
    $is_field_result = $mysqli->query($is_field_query);

    $is_true = $is_field_result->num_rows;

    $is_field_result->close();

    return $is_true;

}

function get_content($column, $table, $requested) {

    $get_content_query = "SELECT ".$column." FROM ".$table." WHERE ".$column."='".$requested."'";
    $get_content_result = $mysqli->query($get_content_query);

    $get_content_row = $get_content_result->fetch_array(MYSQLI_ASSOC);
    $get_content_content = $get_content_row["content"];

    $get_content_result->close();

    return $content;

}

我一遍又一遍地尝试过,我不知道为什么它不会起作用。第一个是返回1表示有效,0表示无效。第二个从MySQL表中的特定单元格中检索内容。任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:0)

你在函数中使用$mysqli,但是你永远不会传递MySQLi资源。考虑像这样编写你的函数:

function is_field($mysqli, $column, $table, $requested) {

或者,创建一个获取MySQLi资源的类,并在函数内用$this->mysqli引用它。

此外,像这样的代码可能是另一个问题:

$is_field_result = $mysqli->query($is_field_query);

$is_true = $is_field_result->num_rows;

您没有检查$is_field_result是否为false;因此,下一个语句会导致致命错误,因为无法从不是对象的内容中获取属性。

if (($is_field_result = $mysqli->query($is_field_query)) === false) {
    die($mysqli->error);
}
$is_true = $is_field_result->num_rows;

答案 1 :(得分:0)

事实证明它不起作用的原因是我需要在函数中添加一个额外的字段来接受从连接中传递$ mysqli。

function is_field($mysqli, $column, $table, $requested) {

$is_field_query = "SELECT * FROM $table WHERE $column='$requested'";
if (($is_field_result = $mysqli->query($is_field_query)) == false) {        
    die($mysqli->error);        
}   
$is_true = $is_field_result->num_rows;
$is_field_result->close();
return $is_true;

}

function get_content($mysqli, $column, $table, $requested) {

$get_content_query = "SELECT * FROM $table WHERE $column='$requested'";
if (($get_content_result = $mysqli->query($get_content_query)) == false) {
    die($mysqli->error);
}
$get_content_row = $get_content_result->fetch_array(MYSQLI_ASSOC);
$get_content = $get_content_row["content"];
$get_content_result->close();
return $get_content;

}