包含未定义的PHP变量

时间:2015-01-12 19:11:39

标签: php mysql mysqli undefined

我试图让一个基本的注册页面能够连接到本地数据库。

Notice: Undefined variable: dbhost in C:\wamp\www\functions.php on line 19

Warning: mysqli_query() expects parameter 1 to be mysqli, null given in C:\wamp\www\functions.php on line 19

Notice: Undefined variable: con in C:\wamp\www\functions.php on line 19

Warning: mysqli_error() expects parameter 1 to be mysqli, null given in C:\wamp\www\functions.php on line 19

这些是我得到的错误。它们在我的functions.php脚本中引用函数时出现。

<?php //functions.php
$dbhost = 'localhost'; //change to webserver ip
$dbname = 'maindb';
$dbuser = 'administrator';
$dbpass = 'password';
$appname = "webapp";

$con = mysqli_connect($dbhost,$dbuser,$dbpass) or die (mysqli_error($con));
mysqli_select_db($con, $dbname) or die (mysqli_error($con));

function createTable($name, $query)
{
    queryMysql("CREATE TABLE IF NOT EXISTS $name($query)");
    echo "Table '$name' created or already exists<br>";
}

function queryMysql($query)
{
    $result = mysqli_query($dbhost, $query) or die(mysqli_error($con));
    return $result;
}

我不确定这里的问题是什么。几年前我学习了PHP,自2011年以来它似乎发生了很大的变化。任何帮助都会受到赞赏。

1 个答案:

答案 0 :(得分:4)

这些变量在全局范围内声明,因此您的函数无法使用。为了使它们成为你需要将它们作为该函数的参数传递:

function queryMysql($query, $con, $dbhost)

(您也可以使用global关键字,但这是一个不好的实践,所以我不会在这里显示它。)

此外,mysqli_query()的第一个参数应该是您的MySQL连接资源,它存储在$con中,而不是$dbhost

function queryMysql($query, $con)
{
    $result = mysqli_query($con, $query) or die(mysqli_error($con));
    return $result;
}