-2

私はphpにかなり慣れていません。これはおそらくばかげた間違いです...しかし、何が起こっているのかわかりません。phpを使用してデータベースにテーブルを作成しようとしています。ユーザー名にちなんでテーブルに名前を付けたい。変数を使用しています$tableusername。これが私のコードです

$sql="SELECT * FROM userdata WHERE username='$username'";
$result=mysql_query($sql);

while ($row = mysql_fetch_assoc($result))
        {
            $tableusername = $row["username"];
        }

$create = "CREATE TABLE `".$tableusername."` ('
    . ' `ID` INT NOT NULL AUTO_INCREMENT PRIMARY KEY, '
    . ' `please` VARCHAR(50) NOT NULL, '
    . ' `make` VARCHAR(50) NOT NULL, '
    . ' `this` VARCHAR(50) NOT NULL, '
    . ' `work` VARCHAR(50) NOT NULL'
    . ' )'
    . ' ENGINE = myisam;";

mysql_query($create)


?>

<html>
<head>
</head>
<body>
You have successfully signed up. <?php echo $tableusername ?>
</body>
</html>

つまり、これにより。という名前のテーブルが作成され$tableusernameます。変数は引き継がれません。しかし、Iecho $tableusernameの場合、変数は引き継がれます。私はこれにかなり慣れていないので、どんな助けでもありがたいです。

4

4 に答える 4

1

文字列の連結が無効です。double quotesの代わりに使用してsingle quotesください。

$create = "CREATE TABLE `".$tableusername."` ("
    . " `ID` INT NOT NULL AUTO_INCREMENT PRIMARY KEY, "
    . " `please` VARCHAR(50) NOT NULL, "
    . " `make` VARCHAR(50) NOT NULL, "
    . " `this` VARCHAR(50) NOT NULL, "
    . " `work` VARCHAR(50) NOT NULL' "
    . " )"
    . " ENGINE = myisam;";
于 2012-10-21T17:30:35.860 に答える
1

これを SQL クエリの後に追加します - (これは本当に役立ち、エラー修正時間を短縮します)

or die("A MySQL error has occurred.<br />Error: (" . mysql_errno() . ") " . mysql_error());

インスタンスでこれをエコーし​​ます:

MySQL エラーが発生しました。エラー: (1064) SQL 構文にエラーがあります。near '' を使用する正しい構文については、MySQL サーバーのバージョンに対応するマニュアルを確認してください。' IDINT NOT NULL AUTO_INCREMENT PRIMARY KEY' . 1 行目の' pleaseVARCH'

これは、エラーが & に関するものであることを示しています。


単一引用符を含むようにコードを変更して実行すると、エコーがなくなりました。

   <?php
    $tableusername = "philip";
    $create = "CREATE TABLE `".$tableusername."` ("
        . " `ID` INT NOT NULL AUTO_INCREMENT PRIMARY KEY, "
        . " `please` VARCHAR(50) NOT NULL, "
        . " `make` VARCHAR(50) NOT NULL, "
        . " `this` VARCHAR(50) NOT NULL, "
        . " `work` VARCHAR(50) NOT NULL"
        . " )"
        . " ENGINE = myisam;";

    mysql_query($create)or die("A MySQL error has occurred.<br />Error: (" . mysql_errno() . ") " . mysql_error());

    ?>

注: PHP に組み込まれた SQL を使用する場合は、 MySQLi拡張機能を参照してください。mysql_* は非推奨プロセスにあります。

お役に立てれば。

于 2012-10-21T17:41:37.220 に答える
0

ヒアドキュメントを使用します:

$create = <<<SQL
CREATE TABLE `$tableusername` (
    `ID` INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    `please` VARCHAR(50) NOT NULL,
    `make` VARCHAR(50) NOT NULL,
    `this` VARCHAR(50) NOT NULL,
    `work` VARCHAR(50) NOT NULL
)
ENGINE = myisam;
SQL;

特に、ヒアドキュメントで文字列補間を使用できますが、実際にはパラメーター化されたクエリを使用する必要があります。

于 2012-10-21T17:34:40.067 に答える