• 締切済み
  • 暇なときにでも

PHPでMySQLのSET @hoge:=□;は?

・PHPで、MySQLのSET @hoge:=□;は使えないのでしょうか? ・一度SQL経由で取得したデータをPHPでセットして、再度SQL発行するしかない? ■やりたいイメージ $sql = ' SET @hoge:=□; SET @piyo := ■; SELECT * FROM temp WHERE date BETWEEN @min AND @max; '; $sth = $pdo->prepare($sql);

共感・応援の気持ちを伝えよう!

  • 回答数1
  • 閲覧数84
  • ありがとう数6

みんなの回答

  • 回答No.1

共感・感謝の気持ちを伝えよう!

質問者からのお礼

回答ありがとうございました。 リンク先見ましたが、難しくて良く分かりませんでしたー

関連するQ&A

  • PDOでMYSQL

    WHERE区の値をbindValueしているのですが、結果が取得できません。 ちなみにエラーになるわけでも文字化けを起こすわけでもありません。 $name = '太郎'; $sql = 'SELECT * FROM table WHERE name = :name; $sth = $dbh->prepare($sql); $sth->bindValue(':name', $name, PDO::PARAM_STR); $sth->execute(); $result = $sth->fetchAll(); print_r($result); いろいろ試してたところ、日本語だと結果を取得しないようで SQLデータの「太郎」となっていた箇所を「tarou」に変更し 変数の部分だけ変更したところ結果を取得できました。 $name = 'tarou; 基本の構文は合っていると思うのですが単純に日本語の指定が できないのでしょうか? PHPとMYSQLは全てUTF-8でバージョンは下記の通りです。 PHP:5.3.8 MYSQL:Client API version mysqlnd 5.0.8-dev - 20102224 - $Revision: 310735 $ PDO: PDO drivers mysql, odbc, sqlite, sqlite2 Client API version mysqlnd 5.0.8-dev - 20102224 - $Revision: 310735 $

    • ベストアンサー
    • PHP
  • PHPでのMySQLデータ抽出でおかしな現象

    お世話になります。 是非、知恵を貸していただきたく投稿させていただきました。 PHPにてMySQLのデータを持ってくる際におかしな現象がおきております。 登録日(entry_date)をデータ型datetime持つテーブルがあります。 そのテーブルに対し、以下のSQL文を発行し実行したところ、phpmyadminでは正常に動作するのに、PHPではある日付でのみ結果がおかしいという現象が発生しました。 ●正常パターン(2016-01) SELECT COUNT(*) AS cnt FROM テーブル WHERE DATE_FORMAT(entry_date, '%Y-%m')='2016-01'; phpmyadmin上で動作させた結果 cnt --- 155 phpで動作させた結果 Array ( [0] => Array ( [cnt] => 155 ) ) ●異常パターン(2017-01) SELECT COUNT(*) AS cnt FROM テーブル WHERE DATE_FORMAT(entry_date, '%Y-%m')='2017-01'; phpmyadmin上で動作させた結果 cnt --- 19 phpで動作させた結果 Array ( [0] => Array ( [cnt] => 0 ) ) 異常になるのは、何故か日付指定が「2017-01」の場合のみで、他の日付では問題ありません。 「2017」年のほかの日付はまだ存在しないので、そちらは確認できないのですが。 PDOが駄目なのかと思い、PDO以外でも実行してみましたが、結果は変わりませんでした。 ちなみに、SQL文で、DATE_FORMATを利用せずに、 entry_date LIKE '2017-01%' や entry_date between '2017-01-01 00:00:00' and '2017-01-31 23:59:59' なども実行してみたのですが、結果は一緒でした。 検索日付で動作がおかしくなるなんてことがあるのでしょうか・・・ <<環境>> さくらスタンダード mysqlバージョン:5.5 phpバージョン:5.3 もし何か思い当たること等ございましたら、ご教授願いたく思います。 よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • PHP+PDO+MYSQL で実行されたSQL文の取得について

    PHP+PDO+MYSQL で実行されたSQL文の取得について PEARのDBからPDOへの移行をしていましてデバック用のSQL文取得で困っています。 $sql = "SELECT * FROM sample where id = ? And id2 = ?" PEARのDBでは $db->query($sql,array(1,5)); $db->last_query; で実行したSQL文を取得することは可能でした。 PDOの場合 $sql_result = $pdo->prepare($sql); $sql_result->execute(array(1,5)); でリプレースフォルダ(クォート処理?)を利用してSQLを実行出来るようですが、 実行したSQLを確認する方法がマニュアル等を読みましたがどうしても分かりません。 どなたかご存知の方がいらっしゃいましたらご教授お願い致します。

    • ベストアンサー
    • PHP
  • Mysqlの接続について

    現在、以下のようなperlのスクリプトを作っているのですが、mysqlへの接続,切断は以下の場合、どちらにした方がいいのでしょうか? (1)の場合 use DBI; $dsn="DBI:mysql:database=dbname:host=localhost"; $dbh=DBI->connect($dsn,'user','pass'); $sth = $dbh->prepare("SELECT no,title,name,date,host From `table1` where no='1'"); $sth->execute; $sth->fetchrow_array; $sth->finish; $sth2 = $dbh->prepare("SELECT no,title,name,date,host From `table2` where no='1'"); $sth2->execute; $sth2->fetchrow_array; $sth2->finish; $dbh->disconnect; (2)の場合 use DBI; $dsn="DBI:mysql:database=dbname:host=localhost"; $dbh=DBI->connect($dsn,'user','pass'); $sth = $dbh->prepare("SELECT no,title,name,date,host From `table1` where no='1'"); $sth->execute; $sth->fetchrow_array; $sth->finish; $dbh->disconnect; $dsn="DBI:mysql:database=dbname:host=localhost"; $dbh=DBI->connect($dsn,'user','pass'); $sth2 = $dbh->prepare("SELECT no,title,name,date,host From `table2` where no='1'"); $sth2->execute; $sth2->fetchrow_array; $sth2->finish; $dbh->disconnect; (1)の場合と(2)の場合の違いは、(1)の場合、最初にデータベースに接続して、一番最後に切断する事で、(2)の場合、毎回データベースへの接続と切断を行う事が違います。 (2)の場合、毎回接続と切断を行うので、2回ほどではあまり変わらないかもしれないのですが、もし10回とか接続と切断を行うとかなり負荷が高くなるような気がするのですが、他のHPなどを拝見すると接続をしたら切断を行うように癖をつけるようにした方がいいと書かれていたりします。 どちらの方が正しいやり方というか、負荷がすくなく使えるのでしょうか?

    • ベストアンサー
    • Perl
  • MySQLとの接続でfetchrow_arrayがwhile文で使えない

    こんばんは、皆さん。 MySQLをPerlから使いたいのですが、 以下のようにやっても、$flagに"OK"が入りませんでした。 つまり、whileは一度もループしないで抜けてしまっているようです。 ------------------------------------------------- use DBI; … sub dbtest{ $dbh = DBI->connect("dbi:mysql:hogeDB:localhost","user","pass"); $sql = "select hoge,fuge from t_name where key='value'"; $sth = $dbh->prepare($sql); $sth->execute; while( ($hoge, $fuge) = $sth->fetchrow_array ){     $flag = "OK"; } $sth->finish; $dbh->disconnect; } ------------------------------------------------- ※実際はユーザ名などは変数にしています。 バージョンは現在、 Perl:v5.8.5 MySQL:5.1.6-alpha となっているようです。 それとちょっと別件ですが、 use autouseの書式は以下でよいのでしょうか? 「use autouse DBI;」 しかし、これだけだとDBIが読み込めてないエラーになるようです。 ご教示よろしくお願いします。

    • ベストアンサー
    • Perl
  • mysqlコマンドとPHPで同じSQLの結果が違う

    MySQL 5.5で、mysqlコマンドからSQLを流したときと、PHPから同じSQLを発行したときで結果が違うのです。 どうも日付のパースが関係しているようで、「2014-08-19」と書くとどちらも同じ結果になるのに、 「2014-8-19」と書くとPHPでは1行も返ってこなくなります。 再現例: ================== CREATE TABLE t (day date NOT NULL) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; INSERT INTO t (day) VALUES ('2014-08-19'); SELECT * FROM t WHERE day = '2014-8-19'; +------------+ | day | +------------+ | 2014-08-19 | +------------+ 1 row in set (0.00 sec) ↑同じSELECTをPHPから発行すると1行も返ってこない。 ================== mysqldとmysqlは5.5.30。 phpinfo()のmysqlのセクションでは Client API version 5.5.30 と出ています。 show variablesで見るとdate_formatはどちらも%Y-%m-%dになっています。 他にどこを確認すればいいでしょうか?

  • ○LinuxでのPDO利用

    ○LinuxでのPDO利用 PHPで次のようなコードを記述しています。 ------------------------------------------------------------- $db = 'mysql:host=localhost;dbname=dbn'; $login = 'user'; $password = 'pass'; try { $pdo = new PDO($db , $login, $password); $sth = $pdo->prepare("SELECT * FROM USER WHERE NAME=? AND PASSWORD=?"); $sth->bindParam(1, $name); $sth->bindParam(2, $password); $sth->execute(); while($row = $sth->fetch(PDO::FETCH_ASSOC)){ $user[] = $row; } }catch(PDOException $e){ var_dump($e); } ------------------------------------------------------------- このコードがWindowsでxampp上で動かすと問題ないんですが、 Linux上で動かすと$sth->execute();でfalseが返ってきて、 値を取得できません。 設定の問題だと思うのですが、 どこにその問題があるのかが分かりません。 環境は CentOS apache 2.0 php 5.3 mysql 5.1 PDO driver,pdo_mysqlもphpinfo()から確認できてます。 php.iniにも extension=pdo.so extension=pdo_mysql.so の記述はあります。 どなたか分かる方、宜しくお願いします。

    • ベストアンサー
    • PHP
  • PHPのPDOについて

    例えば手続き型でしたら、値をデータベースに追加するとき $sql = sprintf( 'INSERT INTO member SET id=%d, message="%s" ', mysql_real_escape_string($id), mysql_real_escape_string($message) ); mysql_query($sql) or die(mysql_error()); など「mysql_real_escape_string」を使って多少なりともセキュリティーをかけると思うのですが、PDOですと下記に書かれている以外に見たことないのですが、「mysql_real_escape_string」などはやらなくても大丈夫ということなのでしょうか? PDOの場合 $sql = 'INSERT INTO member SET id=?, message=?'; $stmt = $db->prepare($sql); $stmt->execute(array($id, $message)); 色々調べてみたのですがいまいち分からないためよろしくお願いします。

    • ベストアンサー
    • PHP
  • PHP PDO prepare後のsql変更

    $sql = "select item from items"; $pdo->prepare($sql); とした後に $sql に where 句を後付でつけることなど出来ますか?

    • ベストアンサー
    • PHP
  • 【PHP】PDOでのMysqlから値を取り出す時に

    現在phpを勉強しております。 PDOオブジェクトを生成し、 prepareメソッドでMySQLで実行するクエリをセットして executeメソッドで実行する。 というのを以下のようにしております $pdo= new PDO($dsn, $user, $password); $query = "SELECT * FROM table_name"; $stmt = $pdo->prepare(); $stmt->execute; で、この場合でも正常に動くのですが MySQL内のテーブルに「?」が含まれる場合だと $query = "SELECT * FROM table_name?test"; $stmt = $pdo->prepare(); $stmt->execute; とすると$queryの「?」をバインド変数とみなしてしまい エラーで「?の数とバインド先の変数の数を合わせろ」と出てしまいます。 ですので、「?」をエスケープしようと思い $query = "SELECT * FROM table_name\?test"; としたのですが、結局エスケープされず 同じエラーが出てしまいました。 エスケープできるならエスケープの方法か ?をバインド変数としてみなさない方法か または他の解決方法かを よろしければご教授願います。

    • ベストアンサー
    • PHP