我用下面的代码来检查柱存在,如果没有,添加它:检查列上存在,如果不通过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