質問編集履歴

2

nakamura03

nakamura03 score 25

2015/09/19 19:58  投稿

SQL文ではきちんと値が取得できるのに、phpから結果を取得できない
こんばんは。お世話になります。phpの勉強を始めたばかりの初心者です。
sql文ではうまく行くのに、phpを通して結果を取得しようとすると、失敗してしまいます。
何がいけないのでしょうか。ご教授お願いします。
$config = [
   'pdo' => [
       'dsn' => 'mysql:dbname=****;host=localhost;charset=utf8',
       'username' => '****',
       'password' => '****',
   ],
];
try {
   $c = $config['pdo'];
   $pdo = new PDO($c['dsn'], $c['username'], $c['password']);
   $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
   $pdo->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
   $stmt = $pdo->prepare('
SELECT tables.*, members.name, tmembers.id
SELECT tables.*, members.name, members.id
FROM tables, members
WHERE tables.userid = members.id and tables.id = :id
');
   $stmt->bindParam(':id', $_SESSION['id'], PDO::PARAM_STR);
   $stmt->execute();
   $row = $stmt->fetchAll();
} catch (PDOException $e) {
   $error = $e->getMessage();
}
var_dump($row); //結果は、array(0) { }
-----------------
SELECT tables.*, members.name, members.id
FROM tables, members
WHERE tables.userid = members.id and tables.id = 45
のように、idをbindしないSQL文では成功して、ちゃんとデータを取得することができます。
結合する時はbindが使えないのでしょうか……
  • PHP

    36794 questions

    PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

  • MySQL

    11425 questions

    MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

1

nakamura03

nakamura03 score 25

2015/09/19 19:57  投稿

SQL文ではきちんと値が取得できるのに、phpから結果を取得できない
こんばんは。お世話になります。phpの勉強を始めたばかりの初心者です。
sql文ではうまく行くのに、phpを通して結果を取得しようとすると、失敗してしまいます。
何がいけないのでしょうか。ご教授お願いします。
$config = [
   'pdo' => [
       'dsn' => 'mysql:dbname=****;host=localhost;charset=utf8',
       'username' => '****',
       'password' => '****',
   ],
];
try {
   $c = $config['pdo'];
   $pdo = new PDO($c['dsn'], $c['username'], $c['password']);
   $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
   $pdo->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
   $stmt = $pdo->prepare('
SELECT ttables.*, tmembers.name, tmembers.id
FROM ttables, tmembers
WHERE ttables.userid = tmembers.id and ttables.id = :id
SELECT tables.*, members.name, tmembers.id
FROM tables, members
WHERE tables.userid = members.id and tables.id = :id
');
   $stmt->bindParam(':id', $_SESSION['id'], PDO::PARAM_STR);
   $stmt->execute();
   $row = $stmt->fetchAll();
} catch (PDOException $e) {
   $error = $e->getMessage();
}
var_dump($row); //結果は、array(0) { }
-----------------
SELECT tables.*, members.name, members.id
FROM tables, members
WHERE tables.userid = members.id and tables.id = 45
のように、idをbindしないSQL文では成功して、ちゃんとデータを取得することができます。
結合する時はbindが使えないのでしょうか……
  • PHP

    36794 questions

    PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

  • MySQL

    11425 questions

    MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る