-2

このコードを更新しようとしていますが、機能しません。私はそれを読み直し、他の例を何時間も見てきましたが、これを機能させるにはいくつかの助けが必要です。これは、mysqlデータベースのメンバーシップテーブルの基本的なUPDATEスクリプトです。私はmysqlバージョン5.0.91を持っています。私が試したことは何も機能していません。アップロードしてブラウザでテストすると、echo「updatequeryfailed」が返されます。失敗している部分を太字にしました。理由がわかりません。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=」で「k」と「h」のつづりを間違えました

于 2012-09-12T13:27:45.243 に答える
0

スペルを間違えました$chechresult-する必要があり$checkresultます; また、$fnameする必要があります$myfname

おそらく$query画面にエコーアウトして、データベースで直接試してみる価値があります-コンソールまたはphpMyAdminのいずれかで。$fname空(間違った変数)なので、句WHEREは間違っています。推測では、ゼロ行に影響しているため、正しく実行されています。

このコードにはSQLインジェクションのセキュリティの問題があることに注意してください。クエリに値を追加する前に、必ず値をエスケープしてください。さらに良いことに、PDOにアップグレードする場合は、パラメーター化を使用できます。これにより、エスケープが実行されます。

于 2012-09-12T13:25:58.197 に答える
0

UPDATE順序を含む$query文字列を出力し、それをmysqlコンソールで実行してみてください。

于 2012-09-12T13:27:15.957 に答える