Php mysqli_stmt_prepare在函数中返回false
我正在尽我最大的努力,以对象为导向,我的登录脚本和检查我的网站。因此,我创建了一个名为“尝试登录”的函数。此函数通过外部php文件提供的“mysqli_connect”函数使用数据库连接,该文件包含并返回$link变量 但是,在我的“尝试登录”中,达到了“mysqli\u stmt\u prepare”功能。它总是返回false,因此if语句永远不会运行 mysql_connect.phpPhp 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($
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中添加一个数组和一个返回函数以返回数据库详细信息是有效的。这一定是某种奇怪的超出范围的错误。