【发布时间】:2021-04-22 14:49:30
【问题描述】:
我想问一下这是什么错误。我想向 PHP 显示报告书,但结果如图所示
这是我的报告书:
public function GetReportBook($id_book, $TanggalStart, $TanggalEnd)
{
// select all query
try {
require_once 'Database.php';
$sqlsrvquery = (" EXEC [dbo].[GetReportBook] @id_book=id_book, @TanggalStart=TanggalStart, @TanggalEnd=TanggalEnd");
// prepare query statement
$stmt = $this->conn->prepare($sqlsrvquery);
$stmt->bindParam('id_book', $id_book, PDO::PARAM_STR);
$stmt->bindParam('TanggalStart', $TanggalStart, PDO::PARAM_STR);
$stmt->bindParam('TanggalEnd', $TanggalEnd, PDO::PARAM_STR);
$stmt->execute();
while($r = $stmt->fetch(PDO::FETCH_OBJ)) {
print_r($r);
}
} catch (Exception $e) {
print_r($e->getMessage());
}
}
}
这是在 ASP.NET 中显示的结果:
【问题讨论】:
-
使用
:id_book而不是id_book作为$this->conn->prepare和$stmt->bindParam中的参数名称。您需要在 prepared 语句中使用命名 (:name) 或问号 (?) 参数标记。 -
谢谢。但结果是 SQLSTATE[22007]:[Microsoft][ODBC Driver 17 for SQL Server][SQL Server]varchar 数据类型到 datetime 数据类型的转换导致值超出范围。
-
对
$TanggalStart和$TanggalEnd变量的值使用明确的日期时间格式(yyyymmdd或yyyy-mm-ddThh:mm:ss)。顺便说一句,这些变量的实际值是多少(var_dump($TanggalEnd)返回什么)? -
实际上是根据 Input TanggalStart 和 TanggalEnd 检查报告的值
标签: php sql-server stored-procedures pdo