これは私の最初の投稿であり、PHP の初心者として、軽く踏んでください!!
PHP 5.3 と SQL Server 2012 Express を使用しています
私の問題は、パラメーターの値が HTML フォームの $_POST 変数に由来するパラメーターを持つ PHP から SQL サーバー ストアド プロシージャを実行することです。
私の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 インジェクションを防ぐためです。また、フォームに接続すると、値をエスケープすることになります。
これは、これまでに見た多くの情報へのリンクです
他の多くのブログも検索しましたが、機能するものを見つけることができないようです.
助けてください!