Php MySQL数据库未更新
数据库的输出看起来不错,但更新的输入不会传递到数据库 edit.php-从这里可以正确显示所有值Php MySQL数据库未更新,php,mysql,database,sql-update,Php,Mysql,Database,Sql Update,数据库的输出看起来不错,但更新的输入不会传递到数据库 edit.php-从这里可以正确显示所有值 <?php session_start(); $name = $_SESSION['name']; $sur = $_SESSION['sur']; $pass = $_SESSION['pass']; echo $name.' '.$sur.' '.$pass; //connect $dbh = mysql_connect ("localhost", "xxx_admin", "xxx
<?php
session_start();
$name = $_SESSION['name'];
$sur = $_SESSION['sur'];
$pass = $_SESSION['pass'];
echo $name.' '.$sur.' '.$pass;
//connect
$dbh = mysql_connect ("localhost", "xxx_admin", "xxx")
or die ('ERROR!');
mysql_select_db ("xxx_database");
$query="SELECT * FROM client_info WHERE (first='$name' AND last='$sur' AND password='$pass')";
$result=mysql_query($query);
$id = mysql_result($result,$i,"id");
$first = mysql_result($result,$i,"first");
$last = mysql_result($result,$i,"last");
$phone = mysql_result($result,$i,"phone");
$mob = mysql_result($result,$i,"mob");
$fax = mysql_result($result,$i,"fax");
$email = mysql_result($result,$i,"email");
$web = mysql_result($result,$i,"web");
$com = mysql_result($result,$i,"com");
$add = mysql_result($result,$i,"add");
$city = mysql_result($result,$i,"city");
$state = mysql_result($result,$i,"state");
$zip = mysql_result($result,$i,"zip");
$zone = mysql_result($result,$i,"zone");
$office = mysql_result($result,$i,"office");
$office_num = mysql_result($result,$i,"office_num");
$ext_mob = mysql_result($result,$i,"ext_mob");
$ext_phone = mysql_result($result,$i,"ext_phone");
$ext_office = mysql_result($result,$i,"ext_office");
$srv = mysql_result($result,$i,"srv");
$stype = mysql_result($result,$i,"stype");
$voip = mysql_result($result,$i,"voip");
$vpass = mysql_result($result,$i,"vpass");
$regDate = mysql_result($result,$i,"regDate");
$acct = mysql_result($result,$i,"acct");
$Nagent = mysql_result($result,$i,"Nagent");
$agents = mysql_result($result,$i,"agents");
$password = mysql_result($result,$i,"password");
?>
<html>
<head>
<title></title>
</head>
<body>
<form method="post" action="update.php" name="gen">
<b>Personal Info:</b>
<p>First Name:<input type="text" name="first" size="20" value="<?php echo $first; ?>"/></p>
<p>Last Name:<input type="text" name="last" size="20" value="<?php echo $last; ?>"/></p>
<p>Mob:<input type="text" name="mob" size="20" value="<?php echo $mob; ?>"/>
ext:<input type="text" name="ext_mob" size="4" value="<?php echo $ext_mob; ?>"/></p>
<p>Phone:<input type="text" name="phone" size="20" value="<?php echo $phone; ?>"/>
ext:<input type="text" name="ext_phone" size="4" value="<?php echo $ext_phone; ?>"/></p>
<p>Fax:<input type="text" name="fax" size="20" value="<?php echo $fax; ?>"/></p>
<p>E-mail:<input type="text" name="email" size="35" value="<?php echo $email; ?>"/></p>
<p>Address:<input type="text" name="add" size="40" value="<?php echo $add; ?>"/></p>
<p>City:<input type="text" name="city" size="20" value="<?php echo $city; ?>"/></p>
<p>State:<input type="text" name="state" size="20" value="<?php echo $state; ?>"/></p>
<p>Zip Code:<input type="text" name="zip" size="5" value="<?php echo $zip; ?>"/></p>
<p>Zone:<input type="text" name="zone" size="5" value="<?php echo $zone; ?>"/></p>
<br>
<b>Office Info:</b>
<p>Company:<input type="text" name="com" size="40" value="<?php echo $com; ?>"/></p>
<p>Office Address:<input type="text" name="office" size="40" value="<?php echo $office; ?>"/></p>
<p>Office Num #:<input type="text" name="office_num" size="15" value="<?php echo $office_num; ?>"/>
ext:<input type="text" name="ext_office" size="4" value="<?php echo $ext_office; ?>"/></p>
<p>Website:<input type="text" name="web" size="30" value="<?php echo $web; ?>"/></p><br>
Old password:
<input type="password" size="20" name="oldpassword">
New password:
<input type="password" size="20" name="newpassword">
verify new password
<input type="password" size="20" name="verpassword">
<input type="text" size="20" name="id" value="<?php echo $id; ?>">
<input type="submit" value="Update Database">
</form>
</body>
</html>
首先,我强烈建议您在向数据库发送任何内容之前,先避开用户输入。它将避免使用特殊字符,避免使用关键字扰乱数据库。要做到这一点,只需像这样使用mysql\u real\u escape\u string()
$ud_first=mysql_real_escape_字符串($_POST['first'])
您应该检查mysqli,因为mysql正在被解密。如果您刚刚开始编写代码,我建议您尽快切换。效率和安全性将提高
添加一个;在查询的最后。将帮助服务器知道它的终点
更改或死亡('ERROR!')代码>由或死亡(mysql_error())代码>这将回显mysql服务器遇到的最后一个错误。它很可能会告诉你你的问题是什么
我给你这些提示,因为我不明白为什么你的代码不能按预期工作
首先,我强烈建议您在向数据库发送任何内容之前,先避开用户输入。它将避免使用特殊字符,避免使用关键字扰乱数据库。要做到这一点,只需像这样使用mysql\u real\u escape\u string()
$ud_first=mysql_real_escape_字符串($_POST['first'])
您应该检查mysqli,因为mysql正在被解密。如果您刚刚开始编写代码,我建议您尽快切换。效率和安全性将提高
添加一个;在查询的最后。将帮助服务器知道它的终点
更改或死亡('ERROR!')代码>由或死亡(mysql_error())代码>这将回显mysql服务器遇到的最后一个错误。它很可能会告诉你你的问题是什么
我给你这些提示,因为我不明白为什么你的代码不能像预期的那样工作。因为我不知道你的表结构,试一下这个并进行相应的调试
$query="UPDATE client_info SET first='$ud_first',
last='$ud_last',
phone='$ud_phone',
mob='$ud_mob',
fax='$ud_fax',
email='$ud_email',
web='$ud_web',
com='$ud_com',
add='$ud_add',
city='$ud_city',
state='$ud_state',
zip='$ud_zip',
zone='$ud_zone',
office='$ud_office',
office_num='$ud_office_num',
ext_mob='$ud_ext_mob',
ext_phone='$ud_ext_phone',
ext_office='$ud_ext_office',
password='$ud_password' WHERE id=$ud_id;";
mysql_query($query) or die(mysql_error());
由于我不知道您的表结构,请尝试此方法并进行相应的调试
$query="UPDATE client_info SET first='$ud_first',
last='$ud_last',
phone='$ud_phone',
mob='$ud_mob',
fax='$ud_fax',
email='$ud_email',
web='$ud_web',
com='$ud_com',
add='$ud_add',
city='$ud_city',
state='$ud_state',
zip='$ud_zip',
zone='$ud_zone',
office='$ud_office',
office_num='$ud_office_num',
ext_mob='$ud_ext_mob',
ext_phone='$ud_ext_phone',
ext_office='$ud_ext_office',
password='$ud_password' WHERE id=$ud_id;";
mysql_query($query) or die(mysql_error());
有些东西超出了这个问题的范围,但是为什么要分别指定每个结果值呢
您希望得到一个结果,而$i not set实际上是null,因此它可以工作
也许你可以通过使用
$r = mysql_fetch_assoc($result);
foreach($r as $key=>$value){ $$key=$value; }
如果预期或可能有更多行,则必须在foreach循环或类似解决方案中关闭它。另一方面,处理post和保护输入可能也很简单
$allowed_post_vars=array('city','zip',...); // define ok variables
foreach($allowed_post_vars as $postvar)// each of them
{ $ud='ud_'.$postvar; // prepare longer name, like $ud_city etc
$$ud=mysql_real_escape_string($_POST[$postvar]); //assign it sanitized value
}
有些东西超出了这个问题的范围,但是为什么要分别指定每个结果值呢
您希望得到一个结果,而$i not set实际上是null,因此它可以工作
也许你可以通过使用
$r = mysql_fetch_assoc($result);
foreach($r as $key=>$value){ $$key=$value; }
如果预期或可能有更多行,则必须在foreach循环或类似解决方案中关闭它。另一方面,处理post和保护输入可能也很简单
$allowed_post_vars=array('city','zip',...); // define ok variables
foreach($allowed_post_vars as $postvar)// each of them
{ $ud='ud_'.$postvar; // prepare longer name, like $ud_city etc
$$ud=mysql_real_escape_string($_POST[$postvar]); //assign it sanitized value
}
它说成功是因为只要DB connect工作,它就没有其他选择。试着打印出post值,并确保您实际得到了您应该得到的值,以及对于严重不安全代码的记录-to-mysql_query($query)或die(mysql_error());做一件事,回显您的更新查询并将其粘贴到mysql中,看看是什么错误。它表示成功,因为只要DB connect工作,它就没有其他选项。试着打印出post值,并确保您实际得到了您应该得到的值,以及对于严重不安全代码的记录-to-mysql_query($query)或die(mysql_error());做一件事,回显您的更新查询并将其粘贴到mysql中,看看有什么错误。再三考虑,可能只是“您的某些地方的值没有逃逸”,从而使服务器陷入混乱。主机只提供mysql,但我的主机服务器上仍然没有mysqli再三考虑,它可能只是一个没有逃逸的“某些地方”的值,它会弄乱服务器。主机只提供mysql,但我的主机服务器上仍然没有mysqli