【发布时间】:2014-06-24 04:12:31
【问题描述】:
我创建了 mysql 表,并在其中放置了一些列。
现在我想通过php检查数据库中是否存在某个列。
像这样:
if (column exist){
echo "Column in table is available."
}
else{
echo "Column doesnt exist.";
}
可以这样做吗?
非常感谢您的宝贵时间:)
【问题讨论】:
我创建了 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 = (mysql_num_rows($result))?TRUE:FALSE;
if($exists) {
// do your stuff
}
更多信息:- MySQL, Check if a column exists in a table with SQL
注意:- mysql_* 不推荐使用mysqli 或PDO
【讨论】:
mysql 中标记了这个问题。
mysql。你不能在问题得到的每一个回答上都指出这一点。这最好在问题的 cmets 部分完成。
您可以使用 mysql_list_fields 和 mysql_num_fields 来获取表的列
$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)');
}
这也应该对您有所帮助:
IF NOT EXISTS (SELECT * FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = ‘TEST’ AND COLUMN_NAME = ‘TEST_DATE’)
BEGIN
ALTER TABLE TEST ADD TEST_DATE DATETIME
END
或者你可以这样做:
Show columns from table like 'string';
【讨论】:
ALTER TABLE
If your database is MySQL then, you can use mysql_field_name() and mysql_fetch_field() function in php.
$res = mysql_query('select * from customer', $link);
echo mysql_field_name($res, 0); // print cust_id
echo mysql_field_name($res, 1); // print cust_name
echo mysql_field_name($res, 2); // print cust_age
【讨论】:
在 php 中运行此查询并检查行数是否 > 0 :- DESC 表名'%columns_name%'
【讨论】:
好的,我在这个问题上花了 5 个小时查看 StackOverflow 的每个(有时非常复杂)答案,但从未找到有效的答案,而且答案简单得令人沮丧,你会踢自己(就像我一样):
php 7
$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 并停止扫描订单表。否则,子查询不返回任何行且 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!.";
}
【讨论】: