帮助准备好的陈述

时间:2011-01-08 16:28:08

标签: php mysqli prepared-statement

嘿伙计们,我最近听说准备好的声明是保护我的网站免受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

1 个答案:

答案 0 :(得分:3)

您正在尝试在函数中使用全局变量($ mysqli)。 (在这种情况下,错误消息“未定义变量”令人难以置信具有洞察力。)

您需要:

  1. 将变量声明为全局变量。 (即:添加“global $mysqli;”作为checklogin函数中的第一行。)

  2. 将$ mysqli的定义移至checklogin函数中。

  3. 作为一般建议,我建议您阅读PHP手册的variable scope部分。