1

次のコードを使用して、列が存在するかどうかを確認し、存在しない場合は追加します。

mysql_query("select $column from $table") or mysql_query("alter table $table add $column varchar (20)");

しかし、データベースには変更がありません。なぜ何か提案はありますか?

PS データベースが接続されています。

4

3 に答える 3

7

SQLを次のように変更できます...

//THIS IS BETTER BUT DONT USE THIS
$qry = "ALTER IGNORE TABLE {$table} ADD {$column} VARCHAR(20);"

代わりに、準備済みステートメントで PHP PDO または MySQLi を使用してください。連結されたエスケープされていない文字列によるそのレガシーホラーの代わりに。

MySQLi ソリューション:

$mysqli = new mysqli($cfg->host, $cfg->user, $cfg->password, $cfg->db);

if ($mysqli->connect_errno) {
    echo 'Connect failed: ', $mysqli->connect_error, '" }';
    exit();
}

if ($stmt = $mysqli->prepare("ALTER IGNORE TABLE ? ADD ? VARCHAR(20);")) {
    $stmt->bind_param("ss", $table, $column);
    $stmt->execute();
    $stmt->close();
}
$mysqli->close();
于 2013-05-07T11:57:03.783 に答える
0

msqli ユーザー向け

$result = $mysqli->query("SHOW COLUMNS FROM tablename LIKE 'keyword");
$exists = (mysqli_num_rows($result))?TRUE:FALSE;
于 2019-10-17T13:48:10.483 に答える