Php mysqli_stmt_prepare在函数中返回false

Php mysqli_stmt_prepare在函数中返回false,php,function,mysqli,Php,Function,Mysqli,我正在尽我最大的努力,以对象为导向,我的登录脚本和检查我的网站。因此,我创建了一个名为“尝试登录”的函数。此函数通过外部php文件提供的“mysqli_connect”函数使用数据库连接,该文件包含并返回$link变量 但是,在我的“尝试登录”中,达到了“mysqli\u stmt\u prepare”功能。它总是返回false,因此if语句永远不会运行 mysql_connect.php require_once '../conf.php'; $link = mysqli_connect($

我正在尽我最大的努力,以对象为导向,我的登录脚本和检查我的网站。因此,我创建了一个名为“尝试登录”的函数。此函数通过外部php文件提供的“mysqli_connect”函数使用数据库连接,该文件包含并返回$link变量

但是,在我的“尝试登录”中,达到了“mysqli\u stmt\u prepare”功能。它总是返回false,因此if语句永远不会运行

mysql_connect.php

require_once '../conf.php';

$link = mysqli_connect($mysql_server,$mysql_user,$mysql_pass,$mysql_db);

if(mysqli_connect_error())
{
    //Fail
    echo mysqli_connect_error();

}else{
//Success

}

return $link;
以及“尝试登录”失败的代码:

    $link = require_once 'functions/mysql/mysql_connect.php';

print_r($link);

$stmt = mysqli_stmt_init($link);

    echo mysqli_stmt_error($stmt);
    echo mysqli_error();

     //This if statement always fails.
if(mysqli_stmt_prepare($stmt,"SELECT member_salt FROM members WHERE username=?" ) )
{

    mysqli_stmt_bind_param($stmt,'s',$login_details['username']);

    mysqli_stmt_execute($stmt);

    $member_salt = NULL;

    mysqli_stmt_bind_result($stmt,$member_salt);

    mysqli_stmt_close($stmt);

}
调用函数非常简单

attempt_login($login_details);
我已经尝试了很多方法来实现这一点,但它似乎只有在不在函数中时才起作用。这违背了我想把它放在函数中的目的。如果我将错误输出移到If语句之后,它将打印:

未选择任何数据库

即使链接中明确设置了一个。我还可以做打印($link);它确实为mysql服务器打印了正确的数据

在程序化和面向对象的mysqli样式中也存在同样的问题,在“mysqli_prepare”中也失败了

我确实有mysql在这个站点上工作,但是任何在函数中运行任何东西的尝试都失败了

我已经搜索了好几个小时试图找到答案,但找不到任何东西。我期待着收到你的来信!非常感谢


~Travis

您似乎没有将
$stmt
传递给您的函数,我建议您继续阅读。

我想说的是,您还没有选择数据库


$mysql\u db
没有在
./conf.php
中设置,或者有打字错误,或者
$mysql\u db
mysql\u connect.php

中不可见。你是否将
$stmt
传递给你的
尝试登录
函数?@AlixAxel抱歉,我忘记了一点代码,并更新了我的问题来显示它$stmt是在函数中创建的。很抱歉,正如我回复您的评论时所说,$stmt变量是在函数本身中创建的。使用代码“$stmt=mysqli_stmt_init($link);”我更新了我的问题以显示更正。谢谢:)当我回显配置数据时,它没有打印任何内容。不知何故,它无法访问它,将配置复制到同一路径似乎是可行的。您是正确的,它无法访问配置文件。非常感谢!:)只是想再加一个。在conf.php中添加一个数组和一个返回函数以返回数据库详细信息是有效的。这一定是某种奇怪的超出范围的错误。