2012-03-23 20 views
-1

私は夢中になっている問題に直面しています。私は本当にそれを取得していません。ここでは非常に簡単なテーブルの作成を以下に示します。私はテーブルに名前を付けるために変数を使用したいと思います。そして、それは動作していない!!!!!変数を "手書き"の名前に置き換えると、それは動作します...どういうわけか...あなたの返信を先にありがとう。乾杯。マーク私がそれを言及しなかった場合には、それは私を夢中にさせている。PHP MySqlテーブルの作成 - シンプルですが動作しません。どうして?

$processid = mysql_thread_id(); 

mysql_select_db("mydb", $con); 
$sql = 'CREATE TABLE '.$processid.' 
(
bat_file varchar(255), 
bat_file_date datetime, 
bat_file_misc varchar(255), 
bat_titre varchar(255), 
bat_lien varchar(255) 
)'; 

mysql_query($sql,$con); 
+1

mysql_connectはどこですか? –

+0

私はすべてのコードを入れていませんでした。私が言ったように、変数を手書きの名前で置き換えれば、それは機能します。 – Marc

+0

問題があった場合、クエリは自動的に失敗します。 mysql_query()のマニュアルは、エラーをチェックする方法を示しています。そして '$ processid'では動作しないが、手動で入力した名前で動作する場合、最初に行うべきことは、それが持っている値を調べることではないでしょうか? –

答えて

2

mysql_thread_idの戻り値は、あなたがそれを引用しない限り、valid name for a tableではありません。

データベース、テーブル、インデックス、 列、別名、ビュー、ストアドプロシージャ、パーティションを含むMySQLの内

特定のオブジェクト、 、および他のオブジェクト の名前は識別子として知られています。

... 

識別子は数字で始めるかもしれませんが、引用されていない限りは、単に数字の で構成しない場合があります。

引用符文字はバッククォートがあるので、あなたが後という名前のテーブルを作成したい理由を私は知らない

$sql = 'CREATE TABLE `'.$processid.'` ... '; 

に変更した場合、それが動作するはずですがmysql_thread_idは(それは本当にを鳴らし fishy)しかし、完全に正当な理由があるとしても、前に接頭辞を付けて、毎回を付けることはできません。

+0

こんにちはジョン。助けてくれてありがとう。奇妙なことは、手動で数字だけで構成されるテーブルを作成すると、テーブルが適切に作成されるということです。 – Marc

+0

@Marc:なぜそれがうまくいくのか分かりません。問題が修正されたかどうかを確認するために引用してみましたか? – Jon

+0

魅力的なように働いています:)ありがとうございました。 – Marc

関連する問題