4

列が存在するかどうかを確認して列を追加しようとしています。そうでない場合は、以下のコードで既に存在するというメッセージを表示する必要があります。

$prefix = 'vm_';
$col_name = 'checking';

$col = "SELECT ".$col_name." FROM ".$prefix."users";

if (!$col){
    $insert_col = "ALTER TABLE ".$table." ADD ".$col_name." DATETIME NOT NULL";

    mysql_query($insert_col);

    echo $col_name.' has been added to the database';
} else {
    echo $col_name.' is already exists';
}

ただし、列は追加されず、列が既に存在するというメッセージが直接表示されます。

4

5 に答える 5

8

クエリを実行することはありません。条件は代わりにクエリ文字列です。

if (!$col) { //always false, since a nonempty string is always truthy
于 2012-11-08T17:30:47.860 に答える
5

これが最終的なコードです。ばかげた間違いがありました。には使いませんでしmysql_query$col

$prefix = 'vm_';
$col_name = 'checking';

$col = mysql_query("SELECT ".$col_name." FROM ".$prefix."users");


if (!$col){
    //$insert_col = "ALTER TABLE ".$table." ADD ".$col_name." DATETIME NOT NULL";

    mysql_query("ALTER TABLE ".$prefix."users ADD ".$col_name." DATETIME NOT NULL");

    echo $col_name.' has been added to the database';
} else {
    echo $col_name.' is already exists';
}
于 2012-11-08T17:35:16.680 に答える
3

ステートメントをチェックする前に、クエリを実行する必要があります。ボックスを開かないと(つまり、クエリを実行しないと)、ボックスが空かそうでないか(つまり、クエリの結果)がわからないようなものです。

行04をこれに置き換えます

$col = mysql_query("SELECT ".$col_name." FROM ".$prefix."users");

その後、あなたの問題は解決されます

mysqli の詳細については、この記事をお読みください。

PDO ステートメントに移行することも検討してください。

お役に立てれば

于 2012-11-09T02:23:45.880 に答える
2

クエリを実行していません。最初にクエリを実行してから、その条件を確認します。

于 2012-11-08T17:48:34.380 に答える
1

これは私がやったことであり、動作します:

$db= new mysqli('host','user','password','db');
$query = "SHOW COLUMNS FROM tablename LIKE 'columnname'";
$db->query($query);
if(empty(empty($db->num_rows)) { 
   $alter = "ALTER TABLE tablename ADD columnname varchar(50) NOT NULL"; 
   $db->query($alter); 
} else { 
   echo 'column exists';
}
于 2016-02-10T08:56:43.593 に答える