PHP准备语句错误

PHP准备语句错误,php,Php,致命错误:对中的非对象调用成员函数prepare() /home/melazabi/public_html/assigment/The/include/process.php在线 十五 该错误告诉您,您的查询因多种原因而失败 数据库连接失败,身份验证问题或连接完全失败 您的参数定义不正确 您可以通过以下方式进行调试: print_r($statement->errorInfo()); 这将告诉您sql返回的错误是什么 还设置了make用户变量。如果我猜我没有看到你剩下的代码。您可能需要

致命错误:对中的非对象调用成员函数prepare() /home/melazabi/public_html/assigment/The/include/process.php在线 十五


该错误告诉您,您的查询因多种原因而失败

  • 数据库连接失败,身份验证问题或连接完全失败

  • 您的参数定义不正确

  • 您可以通过以下方式进行调试:

     print_r($statement->errorInfo());
    
    这将告诉您sql返回的错误是什么

    还设置了make用户变量。如果我猜我没有看到你剩下的代码。您可能需要$\u POST['un']和$\u POST['pw']

     echo $un;
     echo $pw;
    
    编辑

    连接到数据库:

     $conn = new PDO('mysql:host='SERVERADDRESS';dbname=DBNAME;charset=utf8', 'USERNAME', 'PASSWORD');
    
    那你的问题呢

    $statement = $conn->prepare("select * from users where username=? AND password=?");
    //prepare statment is to try to stop sql injection
    $statement->bindParam(1, $un);
    $statement->bindParam (2, $pw);
    $statement->execute();
    
    根据您在中显示的内容:

    您正在使用基于
    mysql.*
    的连接

    $conn = mysql_connect('localhost','admin','admin') or die("error2"); mysql_select_db("admin") or die("error");
    
    使用PDO查询

    您需要使用:(替换为实际的DB凭据)


    显示设置
    $conn
    的代码
    $un
    $pw
    是如何定义的?$un=$\u POST[“用户名”]$pw=$_POST[“密码”];你的表单元素被命名了吗?例如:
    name=“username”
    name=“password”
    if(isset($\u POST['login']){//获取用户输入的用户名和密码$un=$\u POST[“username”];$pw=$\u POST[“password”];//如果($un&&&$pw),请检查这两个字段是否为空奇怪的是,它可以处理这一行代码,但不能处理prepare语句。$statement=mysql_query(“select*from users,where username='$un'));正如Fred指出的,它看起来像是将PDO和mysql语法结合在一起。请稍后查看我的编辑。我将+1它,因为我们在同一个“波长”;-)并且可能在同一时间。(lol)干杯不客气,很高兴我们能解决这个问题。干杯@Mattlinux1
    $conn = mysql_connect('localhost','admin','admin') or die("error2"); mysql_select_db("admin") or die("error");
    
    $dbname = 'admin';
    $username = 'admin';
    $password = 'admin';
    
    $conn = new PDO("mysql:host=localhost;dbname=$dbname", $username, $password);
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);