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