我想问一下这是什么错误。我想向 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 中显示的结果:
答案 0 :(得分:1)
您需要考虑以下几点:
:name
) 或问号 (?
) 参数标记。yyyymmdd
和 :TanggalStart
参数的值使用明确的日期时间格式(在您的情况下为 :TanggalEnd
)。一个例子,基于你的代码:
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', date('Ymd', strtotime($TanggalStart)), PDO::PARAM_STR);
$stmt->bindParam(':TanggalEnd', date('Ymd', strtotime($TanggalEnd)), PDO::PARAM_STR);
$stmt->execute();
while($r = $stmt->fetch(PDO::FETCH_OBJ)) {
print_r($r);
}
} catch (Exception $e) {
print_r($e->getMessage());
}
}
}