这是我在这里的第一篇文章,作为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注入,我也会在连接到表单后转义值。
这是我到目前为止看到的很多信息的链接
我也搜索了很多其他博客,但似乎找不到任何可行的东西。
请帮忙!