0

PHP変数を使用してSQLテーブルを作成するのに問題があります。

$ tbl_date="data";としましょう。

mysql_query('CREATE TABLE '.$tbl_date.'
(
Test varchar(15),
Yes varchar(15),
Very int
)');

テーブルは作成されません。

4

5 に答える 5

3

テーブル名が引用符で囲まれていないため、機能していないようです。これを試して:

mysql_query('CREATE TABLE `'.$tbl_date.'`
(
`Test` varchar(15),
`Yes` varchar(15),
`Very` int
)');

そして、同じことがフィールド名にも当てはまります。
また、これを試してみてください。人間が読みやすくなっています。

mysql_query("CREATE TABLE `{$tbl_date}`
(
`Test` varchar(15),
`Yes` varchar(15),
`Very` int
)");

さまざまな種類の引用符に注意してください
。--PHPで文字列(SQLクエリなど)を作成するための単一引用符と二重引用符
-テーブル名と列名のSQLクエリの一部として特別に使用される逆引用符

于 2012-04-16T12:38:34.230 に答える
1

書式設定(一重引用符または二重引用符など)が不足していると思います。これを試してください

$sql = "CREATE TABLE `user` (`id` INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY, `name` VARCHAR(255) NOT NULL, `address` TEXT NOT NULL) ENGINE = MyISAM;";
于 2012-04-16T12:41:35.380 に答える
1

これが私の回避策です:

$cars = "CREATE TABLE $tbl_date (
Test varchar(15), 
Yes varchar(15), 
Very int
)";
$results = mysql_query($cars) or die (mysql_error());
于 2013-04-10T10:37:51.647 に答える
0

はい。ただし、ユーザーがコードを挿入しないように注意する必要があります。mySQLインジェクションを調べて、コードが安全であることを確認してください。そうしないと、ユーザーがアクセスを許可しないテーブルを作成または削除する可能性があります。また、なぜそうするのかわかりません。データベースにテーブルを作成し、後で追加できる行を含むフィールドを追加する方がよいでしょう。

于 2012-04-16T12:37:31.830 に答える
0

はい、できます。

mysql_query文字列を取るので、基本的に任意の動的文字列を添付できます。

提案されているように、テーブルの名前の前後にバッククォートを使用する必要があります(そして、接続のユーザーがテーブルを作成する権限を持っているかどうかを確認してください)。

この使用法の主な問題は、SQLインジェクションに対して脆弱であるということです(エスケープしない限り$tbl_date)。したがって、使用する変数にはるかに多くのコントロールを追加することをお勧めします。

また、動的テーブルをデータベース(noSQLデータベースを除く)に追加することは、通常、悪い使用法です(本当にこれが必要かどうかを確認してください)。

于 2012-04-16T12:38:46.160 に答える