繁体   English   中英

致命错误:在非对象PDO上调用成员函数prepare()

[英]Fatal error: Call to a member function prepare() on a non-object PDO

我试图将我的sql工作到PDO,但它显示以下致命错误:在/ home / content / 58/9508458 / html / pa / test中的非对象上调用成员函数prepare()。 第12行的php

原始代码

<?php
$pdfreq=$_GET['dadi'];
include('config.php');
require('fpdf.php');
$link =mysql_connect($db_host,$username,$password);
mysql_select_db($db_name);



$update = "UPDATE mastertable SET pdfstatus =1 WHERE id_pk = $pdfreq";
mysql_query($update, $link);

替换为

<?php
$pdfreq=$_GET['dadi'];
include('config.php');
require('fpdf.php');
$link =mysql_connect($db_host,$username,$password);
mysql_select_db($db_name);



$sql = "UPDATE mastertable SET pdfstatus=?, WHERE id_pk=?";
$q = $link->prepare($sql);
$q->execute(array(1,$pdfreq));

您的$link变量不是PDO对象。 您应该替换:

$link = mysql_connect($db_host,$username,$password);
mysql_select_db($db_name);

带有:

$link = new PDO("mysql:dbname=$db_name;host=$db_host",$username,$password);

您使用的是MySQL帮助程序功能,而不是PDO或MySQLi。

准备工作与您的工作不符

您需要将语法更改为,注意MySQLi中的结尾i

<?php
$pdfreq=$_GET['dadi'];
$id = 1;
include('config.php');
require('fpdf.php');
$link = new mysqli($db_host,$username,$password, $db_name);

$sql = "UPDATE mastertable SET pdfstatus=? WHERE id_pk=?";
$q = $link->prepare($sql);

$q->bind_param("is", $id, $pdfreq);
$q->execute();

由于MySQL没有prepare方法,因此您的值将永远不会设置为1,并且您将因Fatal error: Call to a member function prepare() on a non-object而失败Fatal error: Call to a member function prepare() on a non-object

如果您想使用PDO,请参阅PHP.Net上的PDO文档。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM