这是我在这里的第一篇文章,作为 PHP 的初学者,所以请小心行事!
我正在使用 PHP 5.3 和 SQL Server 2012 express
我的问题是从 PHP 执行 SQL 服务器存储过程,该过程具有参数,其中参数的值来自 HTML 表单中的 $_POST 变量。
我的PHP代码如下:
<?php
require_once("../includes/initialize.php");
//
global $database;
$username = "someone";
$params = array($username);
$conn = $database->connection;
$admin_set = sqlsrv_query($conn, "{call find_admin_by_username_p}", $params);
if($admin = $database->fetch_array($admin_set)) {
var_dump($admin);
} else {
return null;
}
//
/* THIS WORKS
global $database;
$admin_set = $database->query("{call find_admin_by_username}");
if($admin = $database->fetch_array($admin_set)) {
var_dump($admin);
} else {
return null;
}
*/
?>
存储过程的代码是:
CREATE PROCEDURE [dbo].[find_admin_by_username_p]
@username nvarchar(55)
AS
BEGIN
SELECT * FROM dbo.users
WHERE username = @username
END
对于注释的“THIS WORKS”部分,过程 find_admin_by_username 起作用,因为它不包含任何参数。但是,我希望将 @username 作为 $_POST 表单字段提供的变量。
我这样做的主要原因是为了帮助防止 SQL 注入,一旦连接到表单,我也会转义这些值。
这是到目前为止我查看的很多信息的链接
我还搜索了许多其他博客,但似乎找不到任何有用的东西。
请帮忙!