-2

我一直在尝试更新此代码,但它不起作用。我一直在重新阅读它并查看其他几个小时的示例,并且需要一些帮助才能使其正常工作。它是 mysql 数据库中成员表的基本 UPDATE 脚本。我有 mysql 版本 5.0.91。我没有尝试过任何工作。在浏览器中上传和测试时,返回 echo "update query failed" 我将失败的部分加粗。我只是不知道为什么。当我检查 mysqladmin 时,表没有更新。

$host="mysqlhost"; // Host name 
$username="mysqlusername"; // Mysql username 
$password="mysqlpassword"; // Mysql password 
$db_name="mydbname"; // Database name 
$tbl_name="brothers"; // Table name 


// Connect to server and select databse.
mysql_connect("$host", "$username", "$password")or die("cannot connect");  

mysql_select_db("$db_name")or die("cannot select DB");

// Define $myusername and $mypassword 
$mymname=$_POST['mymname'];
$myusername=$_POST['myusername']; 
$mypassword=$_POST['mypassword']; 
$myconfirmpassword=$_POST['myconfirmpassword'];
$mysnumber=$_POST['mysnumber'];
$myemail=$_POST['myemail'];



if ($mypassword !== $myconfirmpassword) {
die ("passwords do not match. Try again!");




if (isset($_COOKIE['fname'])) {
$myfname = ($_COOKIE['fname']);
}

else {
die('could not find cookie fname'); 
}

if (isset($_COOKIE['lname'])) {
$mylname = ($_COOKIE['lname']);
}

else {
die('could not find cookie lname'); 
}

$sql="SELECT * FROM $tbl_name WHERE fname='$myfname' AND lname='$mylname'";
$result=mysql_query($sql)or die("no sql");

while($row = mysql_fetch_array($result))
{
$fname=$row['fname'];
    if (!$fname) {
        die('variable not received');
        }
$lname=$row['lname'];
$position=$row['position'];
$committee=$row['committee'];}


if($mypassword==$myconfirmpassword) {

$query= "UPDATE brothers
SET `mname`='$mymname' WHERE `fname`    ='$fname'";

$chechresult= mysql_query($query) or die (mysql_error()); 
if (!$checkresult) echo 'update query failed';


elseif ($checkresults) {
  echo'update query success';
setcookie('position', $position, time()+86400,'/');
setcookie('committee', $committee, time()+86400,'/');


$headsuccess=header( "location:done_registration.php");
$headsuccess;
if (!$headsuccess) {
    die('Could not redirect success registration'); }

}
}

else{
$headlogin=header( "location:error_registration.php");
$headlogin;
if (!$headlogin) {
    die('Could not redirect registration error'); }
}
4

3 回答 3

1
$chechresult= mysql_query($query) or die (mysql_error()); 
if (!$checkresult) echo 'update query failed';

你在 "$chechresult=" 中用 "h" 拼错了 "k"

于 2012-09-12T13:27:45.243 回答
0

尝试打印包含 UPDATE 顺序的 $query 字符串,然后在 mysql 控制台中执行它。

于 2012-09-12T13:27:15.957 回答
0

你拼错了$chechresult——应该是$checkresult;还有,$fname应该$myfname

可能值得$query在屏幕上回显,并直接在您的数据库中尝试 - 在您的控制台或 phpMyAdmin 中。由于$fname是空的(错误的变量),因此您的WHERE子句是错误的;猜测它正在影响零行,因此执行正确。

请记住,此代码中存在一些 SQL 注入安全问题 - 确保在将值添加到查询之前对其进行转义。更好的是,如果您升级到 PDO,您可以使用参数化,这将为您进行转义。

于 2012-09-12T13:25:58.197 回答