通过PHP检查MySQL表中是否存在列
我创建了mysql表,并在其中放置了一些列 现在我想通过php检查数据库中是否存在某个列 像这样:通过PHP检查MySQL表中是否存在列,php,mysql,Php,Mysql,我创建了mysql表,并在其中放置了一些列 现在我想通过php检查数据库中是否存在某个列 像这样: if (column exist){ echo "Column in table is available." } else{ echo "Column doesnt exist."; } 有可能这样做吗 非常感谢您抽出时间:)试试看 $result = mysql_query("SHOW COLUMNS FROM `table` LIKE 'fieldname'"); $exists = (m
if (column exist){
echo "Column in table is available."
}
else{
echo "Column doesnt exist.";
}
有可能这样做吗
非常感谢您抽出时间:)试试看
$result = mysql_query("SHOW COLUMNS FROM `table` LIKE 'fieldname'");
$exists = (mysql_num_rows($result))?TRUE:FALSE;
if($exists) {
// do your stuff
}
更多详情:
注意:-不推荐使用mysql\*使用
mysqli
或PDO
您可以使用mysql\/u列表\字段和mysql\/u数值\字段来获取表的列
$fields = mysql_list_fields('database_name', 'table_name');
$columns = mysql_num_fields($fields);
在PHP中:
$fields = mysql_list_fields('database_name', 'table_name');
$columns = mysql_num_fields($fields);
for ($i = 0; $i < $columns; $i++) {$field_array[] = mysql_field_name($fields, $i);}
if (!in_array('price', $field_array))
{
$result = mysql_query('ALTER TABLE table_name ADD price VARCHAR(10)');
}
或者你可以:
Show columns from table like 'string';
检查此问题:在php中运行此查询,并检查行数是否大于0:-
DESC tablename“%columns\u name%”好的,我在这个问题上花了5个小时浏览了每一个(有时是可笑的复杂)StackOverflow答案,但从来没有找到一个有效的答案,而且答案如此简单,令人沮丧,你会踢自己(我也是这样做的): PHP7
$mysqli = new mysqli($mysql_url, $mysql_user, $mysql_password, $db_name);
$column_name = "my_column";
$table_name = "my_table";
if ($mysqli->query("SELECT $column_name FROM $table_name")){
//my_column exists in my_table
}
else{
//my_column doesn't exist in my_table
}
数据库101….如果您想找到至少下了一个销售订单的客户,可以使用EXISTS运算符,如下所示:
SELECT customerNumber,
customerName
FROM customers
WHERE EXISTS
(SELECT 1
FROM orders
WHERE orders.customernumber = customers.customernumber);
对于customers表中的每一行,查询将检查orders表中的customerNumber
如果customers表中出现的customerNumber在orders表中存在,子查询将返回第一个匹配行。结果,EXISTS操作符返回true并停止扫描orders表。否则,子查询不返回任何行,EXISTS运算符返回false
要获取尚未下过任何销售订单的客户,请使用not EXISTS运算符,如下所示:
SELECT customerNumber,
customerName
FROM customers
WHERE NOT EXISTS
(SELECT 1
FROM orders
WHERE orders.customernumber = customers.customernumber);
这很简单,但对我来说很有效: 1) 从所需的表中选择“全部”
$qry = "SELECT * FROM table";
2) 带来结果并验证该字段是否存在
if( $result = $mysqli->query($qry) && isset($result['field_you_want']) ){
//Exists
}else{
//Doesn't exists
}
创建一个函数
function CheckIfColumnExist($string) {
global $sqlConnect;
if (empty($string)) {
return false;
}
$query = mysqli_query($sqlConnect, "SELECT $string FROM `table_name`");
if (mysqli_num_rows($query) > 0)
{
$fetched_data = mysqli_fetch_assoc($query);
return true;
}
}
在PHP中
$string = $_POST['string'];
if(CheckIfColumnExist($string) == false){
echo "column doesn't exist!.";
}else{
echo "column is existing!.";
}
mysql_*不受欢迎Hanks@Daan我正在更新我的answer@Daan您应该向OP指出这一点,因为OP已经在
mysql
中标记了这个问题。这很好。只需指出,所有其他答案都使用了mysql
。你不能在问题得到的每一个回答上都指出这一点。这最好在问题的注释部分完成。这些方法的可能重复看起来在当前的PHP版本中被贬低了这会导致错误“不能将mysqli_result类型的对象用作数组”。您需要对其使用fetch方法或类似的方法。此外,如果有大量数据,您可以在查询中添加限制1。请为您的答案添加一些解释,以便其他人可以从中学习。请为您的答案添加一些解释,以便其他人可以从中学习检查列是否存在通常不应包含ALTER TABLE
function CheckIfColumnExist($string) {
global $sqlConnect;
if (empty($string)) {
return false;
}
$query = mysqli_query($sqlConnect, "SELECT $string FROM `table_name`");
if (mysqli_num_rows($query) > 0)
{
$fetched_data = mysqli_fetch_assoc($query);
return true;
}
}
$string = $_POST['string'];
if(CheckIfColumnExist($string) == false){
echo "column doesn't exist!.";
}else{
echo "column is existing!.";
}