我用下面的代碼來檢查柱存在,如果沒有,添加它:檢查列上存在,如果不通過PHP
mysql_query("select $column from $table") or mysql_query("alter table $table add $column varchar (20)");
但是沒有在數據庫中更改。任何建議爲什麼?
P.S.數據庫已連接。
我用下面的代碼來檢查柱存在,如果沒有,添加它:檢查列上存在,如果不通過PHP
mysql_query("select $column from $table") or mysql_query("alter table $table add $column varchar (20)");
但是沒有在數據庫中更改。任何建議爲什麼?
P.S.數據庫已連接。
你可以改變你的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();
$r=mysql_num_rows(mysql_query("SHOW columns from '".$table."' where field='".$column."'"));
if ($r==0){
mysql_query("alter table $table add $column varchar (20)");
}
^如果是這樣的情況下,更有理由要問,爲什麼沒有變化。 – 2013-05-07 11:51:37
愛好/ dev/null ...不要使用PHP mysql遺留api – Terence 2013-05-07 11:51:51
其實不,mysql_query在錯誤時返回false。 – 2013-05-07 11:53:28