Php 使用pdo代码执行搜索
我有一个pdo代码,可以使用关键字“fname”在数据库表中执行搜索,但是我得到了一个错误 致命错误:对非对象调用成员函数preparePhp 使用pdo代码执行搜索,php,pdo,Php,Pdo,我有一个pdo代码,可以使用关键字“fname”在数据库表中执行搜索,但是我得到了一个错误 致命错误:对非对象调用成员函数prepare <?php require 'config.php'; try { $db = new PDO($dsn, $username, $password); $db->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
<?php
require 'config.php';
try {
$db = new PDO($dsn, $username, $password);
$db->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
$fname = $_POST['fname'];
$sth = "SELECT * FROM features_for_office WHERE fname LIKE :fname ";
$stmt = $dsn->prepare($sth);
$stmt->bindValue(':name', '%' . $fname . '%', PDO::PARAM_INT);
$stmt->execute();
$locations = $sth->fetchAll();
echo json_encode( $locations );
} catch (Exception $e) {
echo $e->getMessage();
}
?>
如果有人能帮助我,我将不胜感激。您正在使用$db进行连接,并使用$dsn而不是$db
和你用fetchall做的一样。您使用$stmt执行,但使用$sth获取结果
$stmt = $dsn->prepare($sth);
$stmt->bindValue(':name', '%' . $fname . '%', PDO::PARAM_INT);
$locations = $sth->fetchAll();
到
我已将连接命名为dsn,因此使用它来代替DBN,但这里您使用$db连接到dsn,请尝试更改它一次并检查输出现在我收到错误致命错误:在非对象上调用成员函数fetchAll现在更改$locations=$sth->fetchAll;到$locations=$stmt->fetchAll;获取错误SQLSTATE[HY093]:参数编号无效:未定义参数
$stmt = $db->prepare($sth);
$stmt->bindValue(':fname', '%' . $fname . '%', PDO::PARAM_INT);
$locations = $stmt->fetchAll(PDO::FETCH_ASSOC);