###前提・実現したいこと
PHPとmariaDBを用いて蔵書管理システムを作っています。
SQLインジェクション対策でSQLクエリ文を組み立てる時にバインドすることにしたのですが、カラムと値を両方バインドする方法が分からなかったので質問させていただきます。
###該当のソースコード
php
1<?php 2try{ 3 require_once 'DbManager.php'; 4 $db = getDb(); 5 $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 6 $db->setAttribute(PDO::ATTR_EMULATE_PREPARES, false); 7}catch(PDOException $Exception){ 8 #die('接続エラー:' .$Exception->getMessage()); 9} 10try{ 11 $column = $_GET['column']; 12 $char = $_GET['text']; 13 $sql = 'SELECT * FROM 一般 WHERE :column LIKE :char'; 14 $stmh = $db->prepare($sql); 15 $stmh->bindColumn(':column', $column, PDO::PARAM_STR); 16 $stmh->bindValue(':char', '%'.$char.'%', PDO::PARAM_STR); 17 $stmh->execute(); 18}catch(Exception $Exception){ 19 echo '検索エラー:' .$Exception->getMessage(); 20 echo "検索エラー"; 21 die(); 22} 23?>
###試したこと
php
1$stmh->bindValue(':column', $column, PDO::PARAM_STR);
としてみたりしました。
###補足情報(バージョンなど)
PHP 7.0.22-0ubuntu0.16.04.1 (cli) ( NTS )
mysql Ver 15.1 Distrib 10.0.31-MariaDB, for debian-linux-gnu (x86_64) using readline 5.2
nginx version: nginx/1.13.5
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。