首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >PHPAPI绑定参数得到错误

PHPAPI绑定参数得到错误
EN

Stack Overflow用户
提问于 2018-07-27 06:46:11
回答 2查看 0关注 0票数 0
代码语言:javascript
复制
<?php
$username = '***';
$password = '***';
$database = '***';
$hostname = 'localhost';

$stock_symbol = '1301.T';
$dbh = new PDO("mysql:host=$hostname;dbname=$database", $username, $password);
$stmt = "SELECT * FROM `price/volume` WHERE `stock_symbol`=:stock_symbol";
$stmt->bindParam(':stock_symbol', $stock_symbol, PDO::PARAM_STR);
$stmt->execute();
$result = $stmt->fetchALL(PDO::FETCH_ASSOC);
echo json_encode($result);
 ?>

我是一名初学者,并试图为我的网站创建一个简单的PHP API。以上是API代码。当我在浏览器上运行API时出现错误:

致命错误:未捕获错误:调用/ storage / ssd3 / 769 / /public_html/api.php:10中的字符串上的成员函数bindParam()堆栈跟踪:#storage {s} / ssd3 / 769 /第10行的public_html / api.php

EN

回答 2

Stack Overflow用户

发布于 2018-07-27 15:44:35

你应该prepare()在绑定占位符之前调用。$dbh包含数据库连接。

修改版

代码语言:javascript
复制
<?php

try {
    $dbh = new PDO("mysql:host=$hostname;dbname=$database", $username, $password);
    $stmt = "SELECT * FROM `price/volume` WHERE `stock_symbol`=:stock_symbol";
    $qryResult = $dbh->prepare($stmt);
    $qryResult->bindParam(':stock_symbol', $stock_symbol, PDO::PARAM_STR);
    $qryResult->execute();
    $result = $qryResult->fetchALL(PDO::FETCH_ASSOC);
    echo json_encode($result);
} catch (PDOException $pdoe) {
    echo ($pdoe->getMessage());
    exit;
}
票数 0
EN

Stack Overflow用户

发布于 2018-07-27 16:19:13

这一行:

代码语言:javascript
复制
$stmt = "SELECT * FROM `price/volume` WHERE `stock_symbol`=:stock_symbol";

将变量$stmt设置为该SQL字符串。所以,$stmt是一个字符串。你看到的错误是尝试在其上调用方法的结果。字符串不是PHP中的对象,就像它们在其他语言中一样,并且它们没有方法。因此,每当你尝试在任何字符串上调用任何方法时,你都会遇到类似的错误。

代码语言:javascript
复制
$str = "any string";
$try = $str->anyMethod();
// Fatal error: Uncaught Error: Call to a member function anyMethod() on string

你需要从该字符串创建一个预准备语句,而不是简单地将字符串分配给$stmt

代码语言:javascript
复制
$stmt = $dbh->prepare("SELECT * FROM `price/volume` WHERE `stock_symbol`=:stock_symbol");

PDO prepare方法返回一个PDOStatement对象,其中包含bindParam

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/-100001703

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档