Проверьте, существует ли столбец в таблице Mysql через php
Я создал таблицы mysql, и там я поместил несколько столбцов.
Теперь я хочу проверить, что определенный столбец существует в базе данных через php.
Вот так:
if (column exist){
echo "Column in table is available."
}
else{
echo "Column doesnt exist.";
}
Можно ли это сделать?
Большое спасибо за ваше время:)
Ответы
Ответ 1
попробовать
$result = mysql_query("SHOW COLUMNS FROM `table` LIKE 'fieldname'");
$exists = (mysql_num_rows($result))?TRUE:FALSE;
if($exists) {
// do your stuff
}
Подробнее: - MySQL, проверьте, существует ли столбец в таблице с SQL
Примечание: - mysql_ * устарел использовать mysqli
или PDO
Ответ 2
Предположим, что вы хотите найти клиента, который разместил хотя бы один заказ на продажу, вы можете использовать оператор EXISTS следующим образом:
SELECT customerNumber,
customerName
FROM customers
WHERE EXISTS
(SELECT 1
FROM orders
WHERE orders.customernumber = customers.customernumber);
Для каждой строки в таблице клиентов запрос проверяет customerNumber в таблице заказов.
Если в таблице заказов существует customerNumber, который отображается в таблице клиентов, подзапрос возвращает первую соответствующую строку. В результате оператор EXISTS возвращает true и прекращает сканирование таблицы заказов. В противном случае подзапрос не возвращает строки, а оператор EXISTS возвращает false.
Чтобы получить клиента, который не разместил заказы на продажу, вы используете оператор NOT EXISTS в качестве следующего утверждения:
SELECT customerNumber,
customerName
FROM customers
WHERE NOT EXISTS
(SELECT 1
FROM orders
WHERE orders.customernumber = customers.customernumber);
Ответ 3
Вы можете использовать mysql_list_fields и mysql_num_fields для получения столбцов таблицы
$fields = mysql_list_fields('database_name', 'table_name');
$columns = mysql_num_fields($fields);
Ответ 4
В 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';
Проверьте этот вопрос: Как проверить, существует ли столбец таблицы mysql?
Ответ 5
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
Ответ 6
Запустите этот запрос в php и проверьте, если количество строк > 0: -
DESC tablename '% columns_name%'
Ответ 7
Хорошо, я потратил 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....
Ответ 8
Это просто, но у меня работает:
1) Выберите все из таблицы, которую вы хотите.
$qry = "SELECT * FROM table";
2) Принесите результат и проверьте, существует ли поле.
if( $result = $mysqli->query($qry) && isset($result['field_you_want']) ){
//Exists
}else{
//Doesn't exists
}