phpで入力されたデータを元にデータベースにテーブルを作成するコードを書いています。
入力されたデータが英語の際にデータベース内にテーブルが作成されません。
php
1$mysqli->set_charset('utf8'); 2 3//PDOを使ってデータベースに接続 4try { 5 // DBへ接続 6 $dbh = new PDO("mysql:host=; dbname=****; charset=utf8", '***', '***'); 7 8 $dir_name =mysqli_real_escape_string($mysqli, $_POST['name']); 9 10 // SQL作成 11 $sql = "CREATE TABLE ${dir_name}( 12 //省略 13 ) engine=innodb default charset=utf8"; 14 15 // SQL実行 16 $res = $dbh->query($sql); 17} catch(PDOException $e) { 18 19 echo $e->getMessage(); 20 die(); 21}
上記コードの$dir_nameにエスケープした入力データを代入し、これを使ってテーブルを作成しているのですが、入力されたデータが英語名の際にデータベースにテーブルが作成されません。
<試したこと>
入力する英単語が1単語の場合(ex, hello)の場合にはテーブルが正常に作成されます。
ただ2単語以上(ex, how are you?など)になるとデータベースにテーブルが作成されません。
日本語でスペースを含んだテーブルを作成したところ、データベース内に正常にテーブル(スペースを含む)が生成されました。
<開発環境>
OS: Mac OS Catalina, version 10.15.6 Beta (19G36e)
php: 7.1.33
database: phpMyAdmin 4.9.5
browser: Safari, Version 13.1.1
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/06/09 06:19
2020/06/09 06:50
2020/06/09 06:50