0

私は基本的に、phpをまったく使用せずに同等のpHppdoパラメーターバインディングを作成しようとしています。

私はSQLクエリとビルドにNavicatを使用しているため、phpmyadminと言うよりも面白いことができます。

特に、日付値を取り、それを(文字通り)14 if、where、およびgroupbyステートメントに適用するクエリが1つあります。基本的に、ページの上部に変数を作成したいと思います。

:date

次に、クエリ内で、次のような変数を適用します。

WHERE date_inserted > :date

これはストアドプロシージャで実行できると思いますが、クエリとして保持したい(クエリエディタ内)

編集-例:

phpでは、次のようにpdoを使用して準備されたSQLクエリを作成できます。

$stmt = $db->prepare("SELECT * FROM tablename WHERE field1 = :field1 AND datefield <= :date1 AND datefield2 >= :date1 AND datefield3 > :date1");

$stmt->bindParam(':field1', $somevariable);
$stmt->bindParam(':date1', $somedate);
$stmt->execute();

SQLだけでまったく同じことをしたい(navicatを使用)

4

3 に答える 3

2

参加を使用したくないので、これは別の答えです

SET @@session.var = 'some_value'; 
select * from table where field = @@session.var

テストはしていませんが、ここから読みます

http://forums.mysql.com/read.php?61,127011,127796#msg-127796

接続が閉じられて再作成されるまで、変数は保持されると思います。

編集: OPは残りの答えを見つけました。要求に応じて編集します。

以下を使用して、SQL呼び出し内で変数を設定できます。

SET @variablename = [value]

http://dev.mysql.com/doc/refman/5.0/en/user-variables.html

于 2011-03-10T18:48:07.780 に答える
2

私自身の質問をさらに調べた後、次を使用してSQL呼び出し内で変数を設定できることがわかりました。

SET @variablename=[値]

http://dev.mysql.com/doc/refman/5.0/en/user-variables.html

于 2011-03-10T19:47:35.817 に答える
0

クエリ全体を提供できますか?SELECTステートメントの場合、派生テーブルが機能する可能性があると思います。

簡単な例はこれから始めることです

select * from table where field = 'somedate'

これに変更してください

select table.* from (select 'somedate' q)q, table where field = q.q

単一qの行と単一のフィールドの派生テーブルでありq.q、フィールドです。

私は、声明をもっと見ずに、これ以上役立つことは何も知りません。

ちなみに、PHP、phpmyadmin、Navicat、ストアドプロシージャについては何も知りません。独学のMySQLだけ。

于 2011-03-10T18:41:04.117 に答える