【发布时间】:2021-04-24 15:58:44
【问题描述】:
我想读取用户数据。但结果显示像
尝试绑定参数号 65536。SQL Server 最大支持 2100 个参数。
这是我的 login.php 代码(先用硬代码测试)
<?php
header("Content-type: application/json");
include_once 'Database.php';
include_once 'master.php';
//$username = $_GET['username'];
//$password = $_GET['password'];
$username = "angela123";
$password = "admin123";
// get database connection
$database = new Database();
$db = $database->getConnection();
$login = new Master($db);
$stmt = $login->Login($username, $password);
?>
这里是使用参数用户名和密码登录的功能
public function Login($username,$password)
{
// select all query
try {
$sqlsrvquery = ("
EXEC [dbo].[GetAllAdmin2]
@username = ':username',
@password = ':password',
");
// prepare query statement
$stmt = $this->conn->prepare($sqlsrvquery);
$stmt->bindParam(':username', $username, PDO::PARAM_STR);
$stmt->bindParam(':password', $password, PDO::PARAM_STR);
$stmt->execute();
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
$admin_arr = array(
"username" => $row['username'],
"password" => $row['password'],
);
}
if ($row = 0) {
$admin_arr = array(
"status" => false,
"message" => "Invalid Get Data Admin!",
);
}
} catch (Exception $e) {
print_r($e->getMessage());
}
print_r(json_encode($admin_arr));
}
这段代码发生了什么?实际上结果在带有 SP 的 SQL Server 上正常工作 这是登录SP
ALTER Procedure [dbo].[GetAllAdmin2]
(
@username varchar(55),
@password varchar(55)
)
as
begin
SELECT username, password
FROM Admin
WHERE username = @username and password = @password
and status = 'Active';
END
执行 SP 时,输出应显示用户名和密码
username password
angela123 admin123
这里是database.php
<?php
class Database
{
// specify your own database credentials
private $host = "DESKTOP-N550JK\SQLEXPRESS";
private $user = "sa";
private $database = "Library";
private $password = "sqlserver123";
public $conn;
// get the database connection
public function getConnection(){
try {
$this->conn = new PDO("sqlsrv:Server=" .$this->host . ";database=" . $this->database, $this->user, $this->password);
$this->conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $exception) {
echo "Connection error: " . $exception->getMessage();
die("Database Connection Error");
}
return $this->conn;
}
}
?>
这个有什么解决办法吗?谢谢
【问题讨论】:
-
错误日志中是否还有其他信息?例如。问题出现在哪个脚本和哪一行?如果它发生在 MASTER 课程中,请同时发布。
-
SQLSTATE[IMSSP]:尝试绑定参数号 65536。SQL Server 最多支持 2100 个参数。注意:未定义变量:第 48 行 C:\xampp\htdocs\library-api\master.php 中的 admin_arr。由于参数,该数组未读取。但其他功能完全正常。
-
当我调用惩罚时,它显示 [{"id_penalty":"KD-PTY-1","title":"Penalty Tes","penalty":"3000.00","description":"从未受到处罚","entry_date":"2020-12-21 00:00:00.000"}]
标签: php sql-server pdo sqlsrv