检查表中是不是存在列,如果没有,则添加列
Posted
技术标签:
【中文标题】检查表中是不是存在列,如果没有,则添加列【英文标题】:Checking table for existent columns, if not, add column检查表中是否存在列,如果没有,则添加列 【发布时间】:2017-07-13 01:16:30 【问题描述】:我正在尝试制作时事通讯。用户必须填写一个表格,其中$emaila
是他的电子邮件。
<?php
$emaila="test@test.com";
$con=mysqli_connect("localhost","user","pass","dbname");
if (mysqli_connect_errno())
echo "Failed to connect to MySQL: " . mysqli_connect_error();
$val = mysqli_query("select $emaila from emails limit 1");
if($val !== FALSE)
mysqli_query($con,"ALTER TABLE emails ADD (".$emaila." VARCHAR(100))");
mysqli_close($con);
?>
它假设检查电子邮件是否已经在“电子邮件”表中作为列,如果不是,则应该将他的电子邮件作为列放在表中。不知道我做错了什么......
【问题讨论】:
test@test.com
这真的是一个专栏吗? $val = mysqli_query("select
这里没有连接
应该是一列。如果不是,则应添加。
select $emaila from emails
转换为 select test@test.com from emails
。检查查询mysqli_error($con)
中的错误,您会看到。但这永远不会发生,因为您没有将连接传递给查询。
如果您选择这样,如果该列不存在,您将收到错误消息。那没有意义。您想为每封没有列的电子邮件添加一列?这也没有意义。
这个问答***.com/q/22399477/1415724可以帮助你。然后,您可以将该.csv
文件放入Excel 中并对其进行修改,然后以某种方式重新导入phpmyadmin,或者使用PHP php.net/manual/en/function.fgetcsv.php 对其进行解析。另见***.com/q/16391528/1415724 和mysqltutorial.org/mysql-export-table-to-csv
【参考方案1】:
您不会使用ALTER TABLE
将数据添加到表中。你用INSERT
INSERT INTO `emails` (`column_name`) VALUES '$emaila'
您的测试应该是查看该电子邮件是否存在于表格中:
$val = mysqli_query($con,"select * from emails where email_column_name = '$emaila' ") or die (mysqli_error($con));
if($val)
mysqli_query($con,"INSERT INTO `emails` (`email_column_name`) VALUES '$emaila'") or die (mysqli_error($con));
mysqli_close($con);
此外:Little Bobby 表示 your script is at risk for SQL Injection Attacks. 了解 prepared 的 MySQLi 语句。即使escaping the string 也不安全! Don't believe it?
编辑:根据 cmets,您需要从当前表中获取列名,遍历结果集并确认每个列名是电子邮件地址,然后将该地址插入新表中。下面是一些可以帮助您入门的内容:
SELECT `COLUMN_NAME`
FROM `INFORMATION_SCHEMA`.`COLUMNS`
WHERE `TABLE_SCHEMA`='database_name'
AND `TABLE_NAME`='emails';
此查询将从电子邮件表中返回一组列名(不要忘记更改数据库名称),您可以循环访问这些列名。
【讨论】:
我不习惯 MySQL 改进了那么多,我尝试学习但找不到太多关于它的信息...我认为$val = mysqli_query("select $emaila from emails limit 1");
也有问题。
修复一件事,然后追查其他错误。
我测试了,还是不行...没有连接错误。它不会将 $emaila 添加为“电子邮件”表中的列...
您要添加列?或者您正在尝试向列中添加数据?
我正在尝试添加一列。以上是关于检查表中是不是存在列,如果没有,则添加列的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 python pyodbc 检查表中是不是存在列?