0

我正在尝试将我的 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));
4

2 回答 2

1

您的$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);
于 2012-07-02T17:36:42.663 回答
0

您正在使用 MySQL 辅助函数,而不是 PDO 或 MySQLi。

准备不适用于您正在做的事情

您需要将语法更改为,注意iMySQLi中的尾随

<?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 没有准备方法,因此您的值永远不会设置为 1,并且您将失败Fatal error: Call to a member function prepare() on a non-object

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

于 2012-07-02T17:47:48.557 回答