我有一个php页面,它将在登录时跟踪用户并将信息存储在名为' logins'的表中。在phpmyadmin上
现在的php代码看起来像这样
$numlogin = mysql_num_rows($get_client);
if($numlogin==1) {
$thisid = mysql_result($get_client,0,"id");
$thisfore = mysql_result($get_client,0,"forename");
$thissur = mysql_result($get_client,0,"surname");
$thiscomp = mysql_result($get_client,0,"companyname");
$ip = $_SERVER['REMOTE_ADDR'];
$logdate = date('Y-m-d H:i:s');
$logyear = date('Y');
$logmonth = date('m');
$logqtr = ceil($logmonth/3);
$reslog = mysql_query("insert into logins values ('','$myid','$loginemail','$thisfore','$thissur','$thiscomp',
'$ip','$logdate','$logyear','$logmonth','$logqtr')") or die("Error 91");

但如果我想添加ipinfo来跟踪他们的位置,那么我必须向表中添加新列以存储iplocation
我该怎么办?
我可以在phpmyadmin上更改表格并稍后将一些代码写入php吗? 或者正确的方法是什么?
答案 0 :(得分:1)
不,您无法使用您编写的代码安全地向logins
表添加新列。您的INSERT
语句没有列出它插入的列,因此这意味着您必须为所有列提供值。如果更改表列,查询将收到错误,因为值的数量与列数不匹配。
这就是为什么您应该始终明确INSERT
次查询。将其更改为:
$reslog = mysql_query("insert into logins (id, userid, email, forname, surname, comp, ip, logdate, logyear, logmonth, logqtr)
values ('','$myid','$loginemail','$thisfore','$thissur','$thiscomp',
'$ip','$logdate','$logyear','$logmonth','$logqtr')") or die("Error 91");
当然,将我使用的列名替换为表的实际列名。
完成此操作后,您应该可以向表中添加新列,而不会导致代码出错。