2014-09-06 97 views
0

我已經編寫了一個基本腳本以允許用戶編輯他們的註冊詳細信息。php編輯查詢ID字段數組問題更新

表單中的字段已填入登錄用戶的數據。當我嘗試保存記錄我得到以下錯誤:

Query was: UPDATE ccusers SET forename='admin', surname='admin', username='admin', 
password='admin', email='[email protected]' WHERE id='Array' AND 'admin'='admin'. Error: 

在這個階段,它不是拿起ID查詢。

$editid = mysql_real_escape_string($_POST['editid']); 
$Query = "UPDATE ccusers SET forename='$forename', surname='$surname', 
username='$username', password='$password', email='$email' WHERE id='$editid' 
AND '$user'='$user'"; 

我已經刪除了從Delete和editid輸入中隱藏的類型,它們都顯示數組。

<input name="Delete" value="<?php echo $id;?>"> 
<input name="editid" value="<?php echo $id;?>"/> 

Inputs Show Array

我這個花了2個小時。我無法弄清楚我做錯了什麼?我附上了表格結構的屏幕截圖。

users table structure

SCRIPT

<?php 
//connect to database, check login credentials, declare message variables 

include "connect.php"; 
require "authenticate.php"; 
error_reporting(E_ERROR); 
$message = $_GET['message']; 
$user = $_SESSION['UserName']; 
// var_dump ($user); 
// exit; 

$fnameErr = $snameErr = $unameErr = $passwordErr = $emailErr = ""; 
$forename = $surname = $username = $password = $email = ""; 

function validate_input($data) 
{ 
$data = trim($data); 
$data = stripslashes($data); 
$data = htmlspecialchars($data); 
return $data; 
} 

if (isset($_POST['Submit'])) 
{ 
$has_errors = false; 
if (empty($_POST["forename"])) { 
$has_errors = true; 
$fnameErr = "Please enter your forename"; 
}else{ 
$forename = validate_input($_POST["forename"]); 
} 

if (empty($_POST["surname"])) { 
$has_errors = true; 
$snameErr = "Please enter your surname"; 
} else { 
$surname = validate_input($_POST["surname"]); 
} 

if (empty($_POST["username"])) { 
$has_errors = true; 
$usernameErr = "Please enter a username"; 
} else { 
$username = validate_input($_POST["username"]); 
} 

if (empty($_POST["password"])) { 
$has_errors = true; 
$passwordErr = "Please enter a password"; 
} else { 
$password = validate_input($_POST["password"]); 
} 

if (empty($_POST["email"])) { 
$has_errors = true; 
$emailErr = "Please enter an email address"; 
} else { 
$email = validate_input($_POST["email"]); 
} 

//write edited data into tables matching logged in user with their data 
$editid = mysql_real_escape_string($_POST['editid']); 
$Query = "UPDATE ccusers SET forename='$forename', surname='$surname', 
username='$username', password='$password', email='$email' WHERE id='$editid' 
AND '$user'='$user'"; 

if($sql = mysql_db_query ($DBName, $Query, $Link)) { 
$message = "Changes Saved"; 
$current = $_GET['page']; 
header("Location: ccedituser.php?message=".urlencode($message)); 
} else { 
die("Query was: $Query. Error: ".mysql_error($Link)); 
} 
} 

//show logged in user their updated data 
$user = $_SESSION['UserName']; 
$result = mysql_query("SELECT * FROM ccusers WHERE ccusers.username = '$user'") 
or die(mysql_error()); 
while($row = mysql_fetch_array($result)){ 
$id[] = $row['id']; 
$forename = $row['forename']; 
$surname = $row['surname']; 
$username = $row['username']; 
$email = $row['email']; 
$password = $row['password']; 
} 

//delete form and image data when users clicks delete button 
if (isset($_POST['Delete'])){ 
$deleteuser = $_POST['Delete']; 
mysql_query("DELETE FROM ccusers WHERE id = '$deleteuser'"); 
mysql_query("ALTER TABLE ccusers AUTO_INCREMENT = 1"); 
$message = 'Profile Deleted'; 
header("Location: ccedituser.php?&message=".urlencode($message)); 
} 
?> 

<!doctype html> 
<html> 
<head> 
<meta charset="utf-8"> 

<form action="ccedituser.php?" method="post" enctype="multipart/form-data" name="edit" id="editrecord"> 
<fieldset> 

<div class="legendregister">Edit Profile</div> 

<div class="registrationcontainer"> 
<div class="registrationcontainerinner"> 

<div><label class="labelshow">Forename</label><input class="insetpodcast" 
name="forename" type="text" placeholder="Enter your forename" value=" 
<?PHP echo $forename; ?>"/><p class="errorinput"><?php echo $fnameErr;?></p></div> 

<div><label class="labelshow">Surname</label><input class="insetpodcast" 
name="surname" type="text" placeholder="Enter your surname" 
value="<?PHP print $surname; ?>"/><p class="errorinput"> 
<?php echo $snameErr;?></p></div> 

<div><label class="labelshow">Username</label><input class="insetpodcast" 
name="username" type="text" placeholder="Enter a username" 
value="<?PHP print $username; ?>"/> 
<p class="errorinput"><?php echo $usernameErr;?></p></div> 

<div><label class="labelshow">Password</label><input class="insetpodcast" 
name="password" type="text" placeholder="Enter a password" value=" 
<?PHP print $password; ?>"/><p class="errorinput"> 
<?php echo $passwordErr;?></p></div> 

<div><label class="labelshow">email</label><input class="insetpodcast" 
name="email" type="text" placeholder="Enter an email address" 
value="<?PHP print $email; ?>"><p class="errorinput"> 
<?php echo $emailErr;?></p></div> 

<div class="submit"><input name="Submit" type="submit" class="submitreg" 
value="Save"/></div> 
<div class="delete"><input name="deletebtn" type="submit" class="resetreg" 
value="Delete"/></div> 

<input name="Delete" value="<?php echo $id;?>"> 
<input name="editid" value="<?php echo $id;?>"/> 

</div> 
</div> 
</div> 

</form> 
</fieldset> 

回答

2

使用的$ id = $行[ '身份證']而不是$ ID []。

+0

感謝。我在輸入中看到了id,但是我仍然收到錯誤。查詢是:UPDATE ccusers SET forename ='admin',surname ='admin',username ='admin',password ='admin',email = '[email protected]'WHERE id ='5'AND'admin'='admin'。錯誤: – MBM 2014-09-06 00:29:22

+1

在where子句處取消列名稱admin – zakaria 2014-09-06 00:33:56

0

查看錯誤語句中id列限定符的值,它讀取'Array',表示$ editid變量是一個數組。嘗試使用$ editid [0]代替,或者更好,然後val_dump該變量以幫助確定變量爲什麼是數組而不是字符串或整數。

+0

謝謝,我明天再去看看。 – MBM 2014-09-06 00:50:38

0

爲什麼這個WHERE ID = '$ editid' 和 '$用戶'= '$用戶'」你把 '$用戶'='$用戶嘗試列名用戶= '$用戶'