这似乎非常容易,但对于我的生活无法弄清楚为什么这不起作用。我试图简单地将一个对象传递给一个函数但是我得到了这个错误:
捕获致命错误:传递给write_query()的参数3必须是mysqli的一个实例,null给定,在第28行的C:\ xampp \ htdocs \ CSP \ login \ login.php中调用,并在C:\ xampp中定义第40行的\ htdocs \ CSP \ php_scripts \ login_script.php
这些是我的函数定义:
function conn_database()
{
if (!empty($_POST['userid']) && !empty($_POST['password']))
{
$conn = new mysqli('localhost', 'root', '', 'csp');
if (mysqli_connect_errno())
{
echo 'Connection to database failed:'.mysqli_connect_error();
exit();
}
return $conn;
}
}
function write_query($userid, $password, mysqli $conn)
{
$query = 'select * from authorized_users '
."where userid= '$userid'"
."and password_id='$password'";
$result = $conn->query($query);
return $result;
}
我这样称呼他们:
$conn = conn_database();
$result = write_query($userid, $password, $conn);
我在write_query()的定义中输入提示,但是根据我从错误中理解的内容,我的第三个参数不被认为是mysqli的一个实例。 (我知道我应该使用密码和所有密码,我只是想让它首先工作)。任何建议将不胜感激
答案 0 :(得分:2)
你的第三个参数不是mysqli的一个例子。它是null。这是因为您的get_connection
函数没有返回任何内容。
你为什么要检查这个:
if (!empty($_POST['userid']) && !empty($_POST['password']))
这意味着如果您仅为userid
和password
提供帖子数据,则代码将仅尝试连接到SQL服务器。如果这是您想要的行为,您应该将if
语句放在函数之外,如下所示:
if (!empty($_POST['userid']) && !empty($_POST['password']))
$conn = conn_database();
$result = write_query($userid, $password, $conn);
}
虽然似乎没有设置userid
和password
,但无论如何。请务必检查输入中的name
属性并执行var_dump($_POST)
以查看您的脚本是否已过帐。