2017-03-09 16 views
1

以上MySQLiを私はどうなる:MSSQLパラメータ化クエリ

$sql = $connect->prepare("INSERT INTO Table (a, b) VALUES (?, ?)"); 
$sql->bind_param('ss', $a, $b); 
$sql->execute(); 
$sql->close(); 

さて質問ですが、私が代わりのMySQLのSQL ServerのMSSQLと同じことを行う方法?

は私が行うことができます知っている:

$sql = sqlsrv_query($connect, "INSERT INTO Table (a, b) VALUES (?, ?)", array($a, $b)); 

しかし、これは私が(実際には私のウェブサイトがホストされている)Linuxプラットフォームの上に使用することはできません窓、のための特定のSQLドライバが必要です。私も、クエリをパラメータに悩みを持っている

私のサーバーがしかし、MSSQLライブラリがインストールされている、そしてそれは非推奨だとしても、まだそれはPHP 5.6

でかなり良い仕事、私は何ができるすべては、次のとおりです。

$sql = "INSERT INTO Table (a, b) VALUES ('$a', '$b')"; 
mssql_query($sql, $connect); 

もちろん、値を直接挿入したくないので、mssqlでそのクエリをどのようにパラメータ化できますか?

答えて

0

これが最も簡単なことではないようです。とにかく間違いなく準備された文は、元のPHPのドキュメントからPDO

で発生します:

それはSQLSRVを使用することができない場合は、Microsoft SQL ServerおよびSybaseデータベースに接続するPDO_ODBCドライバ を使用することができます、とネイティブの Windows DB-LIBは古代のスレッドで、安全ではなく、もはや によってサポートされていません。

あなたは、UNIXシステムでは、あなたのケースのためのセクションをPDO_ODBCを読むことができます。 のコメントも忘れずに読んでください。これはどのように起こるべきかを理解するのに役立ちます。

thisスタックオーバーフローに関する質問があります。

そして、これはあなたがPDOとパラメータ化クエリを作成する方法である:

$sql = 'SELECT name, colour, calories FROM fruit 
    WHERE calories < :calories AND colour = :colour'; 
// where $dbh is PDO object 
$sth = $dbh->prepare($sql, array(PDO::ATTR_CURSOR => PDO::CURSOR_FWDONLY)); 
$sth->execute(array(':calories' => 150, ':colour' => 'red')); 
$red = $sth->fetchAll(); 
$sth->execute(array(':calories' => 175, ':colour' => 'yellow')); 
$yellow = $sth->fetchAll(); 

official docs上の他の例を参照してください。

幸運な友人とあなたの経験を共有することを忘れないでください。

関連する問題