0

これが私のコードです:

function connect() {
    $pdo = new PDO("mysql:host=localhost;dbname=www","user","pass");
   $xmax = "SELECT MAX(x) FROM headerfooter WHERE site = 'Brighter_Vista'";
   $xresult = $pdo->query($xmax);
   while($row = $xresult->fetch(PDO::FETCH_ASSOC)) {
       print_r($row);
    }
    $ymax = "SELECT MAX(y) FROM headerfooter WHERE site = 'Brighter_Vista'";
   $yresult = $pdo->query($ymax);
   while($row = $yresult->fetch(PDO::FETCH_ASSOC)) {
       print_r($row);
   }
}

関数を呼び出しても何も表示されません。

mysql ターミナルでクエリを確認しましたが、動作します。

私は PDO を初めて使用しますが、何が間違っていますか?

4

2 に答える 2

1

クエリをtrycatchブロックでラップします。接続が静かに失敗している可能性があります。

function connect() {
  try{
      $pdo = new PDO("mysql:host=localhost;dbname=www","user","pass");
      $xmax = "SELECT MAX(x) FROM headerfooter WHERE site = 'Brighter_Vista'";
      $xresult = $pdo->query($xmax);
      while($row = $xresult->fetch(PDO::FETCH_ASSOC)) {
          print_r($row);
      }

      $ymax = "SELECT MAX(y) FROM headerfooter WHERE site = 'Brighter_Vista'";
      $yresult = $pdo->query($ymax);
      while($row = $yresult->fetch(PDO::FETCH_ASSOC)) {
          print_r($row);
      }
   }catch (Exception $e){
      echo $e->getMessage();
      exit;
   }

}

例外がスローされた場合、メッセージは問題がどこにあるかを示します。

于 2012-11-21T16:35:00.430 に答える
1

関数は構文的に正しいです。すべてが順調であるように思われ、私が見ることができる唯一の問題は、PDOが接続しようとしている問題に関連しています。関数を次の関数に置き換えるだけです。

function connect() {
    try {
        $pdo = new \PDO("mysql:host=localhost;dbname=www","user","pass");
        $xmax = "SELECT MAX(x) FROM headerfooter WHERE site = 'Brighter_Vista'";
        $xresult = $pdo->query($xmax);
            while($row = $xresult->fetch(PDO::FETCH_ASSOC))
                print_r($row);
        $ymax = "SELECT MAX(y) FROM headerfooter WHERE site = 'Brighter_Vista'";
        $yresult = $pdo->query($ymax);
            while($row = $yresult->fetch(PDO::FETCH_ASSOC))
                print_r($row);
    } catch (\PDOException $e) {
        exit($e->getMessage());
    }
}

この関数は、次の場合にエラーを表示または防止します。

  • PDOエラー
  • 名前空間を使用しているコンテキスト
于 2012-11-21T16:34:34.403 に答える