我遇到了一个非常普通的php函数。
它背后的想法是在表中添加(TEXT类型)列(如果它不存在)。我的php如下:
function add_column($conn, $table, $colname){
// Prepare and execute statment 1
$sql = $conn->prepare("SHOW COLUMNS FROM $table LIKE '$colname'");
if (!$sql->execute()){
// Prepare and execute statment 2
$sql1 = $conn->prepare("ALTER TABLE `ExamServer`.$table ADD `$colname` TEXT");
$sql1->execute();
}
}
感谢任何帮助,谢谢!谢谢!
答案 0 :(得分:2)
您可以使用以下查询检查列是否存在:
SHOW COLUMNS FROM `$table` WHERE field = '$colname'
如果有列,您将获得一行。如果没有,您可以执行ALTER
查询。
if($sql->num_rows == 0) {
// Perform your alter query here
}
答案 1 :(得分:2)
第一期:第一份准备好的声明。
而不是检查第一个语句是否产生true或false,因为您正在检查此行是否存在,而只需使用->num_rows
。
第二期:第二份准备好的声明。您的COLUMN
中的查询缺少ADD
,因此应该是:
ALTER TABLE $table ADD COLUMN $colname TEXT
最终代码:
$sql = $conn->prepare("SHOW COLUMNS FROM $table LIKE '%$colname%'"); // add wildcard
$sql->execute();
if($sql->num_rows <= 0) { // if this column does not exist, do the if block
$sql->store_result(); // this line is important for the second prepared statement to work
// Prepare and execute statment 2
$sql1 = $conn->prepare("ALTER TABLE $table ADD COLUMN $colname TEXT");
$sql1->execute();
}
最后注意事项:如果这是用户输入并希望绑定它们,则无法绑定标识符,但您可以将它们列入白名单。