嘿伙计们,我最近听说准备好的声明是保护我的网站免受mysql注入的最佳方式,而不是。所以我有一个问题,我似乎无法理解为什么这不起作用:
$mysqli=new mysqli("localhost", "***", "***","***") or die(mysql_error());
function checklogin($username, $password){
$result = $mysqli->prepare("SELECT * FROM users WHERE username = ?");
$result->bind_param("s", $username);
$result->execute();
我收到以下错误:注意:未定义的变量:第45行的/var/www/JMToday/loginchk.php中的mysqli致命错误:在/ var / www中的非对象上调用成员函数prepare()第45行/JMToday/loginchk.php
答案 0 :(得分:3)
您正在尝试在函数中使用全局变量($ mysqli)。 (在这种情况下,错误消息“未定义变量”令人难以置信具有洞察力。)
您需要:
将变量声明为全局变量。 (即:添加“global $mysqli;
”作为checklogin函数中的第一行。)
将$ mysqli的定义移至checklogin函数中。
作为一般建议,我建议您阅读PHP手册的variable scope部分。