PHPのデータベース接続 SESSIONの受け渡しについて

実現したいこと

SESSIONで受け取った日付データを検索条件として、MariaDBからデータを取得したい

前提

統合開発環境_Eclipse上でPHPによりデータベースを接続。
日付で検索をすると下記のエラーがでます。

発生している問題・エラーメッセージ

QLSTATE[42000]: 構文エラーまたはアクセス違反: 1064 SQL 構文にエラーがあります。 使用する正しい構文については、MariaDB サーバーのバージョンに対応するマニュアルを確認してください

該当のソースコード

try{
$db=getDb();
$db->beginTransaction();
$sql="SELECT w.id,w.weather_data,m.temperature,m.humidity,m.updatetime
FROM :table AS m LEFT OUTER JOIN t_weather AS w ON m.t_weather_id=w.id WHERE m.inspectiondate=:inspectiondate;";
$stt = $db->prepare($sql);
$stt->bindValue(':table',e($_SESSION['ssname']));
$stt->bindValue(':inspectiondate',e($_SESSION['inspectiondate']),PDO::PARAM_STR);
$stt->execute();

$result=$stt->fetchAll(PDO::FETCH_ASSOC);

    //ここに配列からデータを格納するコード

if($result===false){ $db->rollback(); die('データが取得できませんでした。やり直してください。<br><a href="month_select_form.php">一覧へ戻る</a>'); }

  $db->commit();
$db = NULL;
$result=null;

} catch (PDOException $e) {
$db->rollback();
die('エラーメッセージ:' . $e->getMessage());
}

試したこと

上記「$_SESSION['inspectiondate']」には’2023-01-12 12:11:12’とdatetime型のデータが入っていることをeclipseの変数で確認しました。検索条件をいれない別のselect文ではデータベースに接続し、データを取得できています。
コマンドプロンプトで上記SQL文と同じものを入力し、日付を入れて接続するとデータ取得できました。構文ミスはないように思いました。
また、下記の2点のやり方を試したところ、同様のエラーとなりました。
1.
$datetime=date('Y-m-d H:i:s', strtotime(e($_SESSION['inspectiondate'])));
$stt->bindParam(':inspectiondate',$datetime,PDO::PARAM_STR);
$stt->execute();
2.
$datetime="'".($_SESSION['inspectiondate'])."'";
$stt->bindParam(':inspectiondate',$datetime,PDO::PARAM_STR);
$stt->execute();

補足情報(FW/ツールのバージョンなど)

PHP 7.4.33
Apache/2.4.54 (Win64)
Eclipse Version: 2022-12 (4.26)
Windows 11 Pro(2022年10月にWindows10よりバージョンアップしました)

プログラムの初心者で、PHPを勉強しております。
お手数おかけしますが、ご教示よろしくお願い致します。

コメントを投稿

0 コメント