2016-12-11 45 views
0

工作这是最奇怪的事情,我相信一个简单的修复,但我不能得到这个现在几个小时的工作,它应该是一个简单的mysqli更新查询。我的代码如下:更新查询不具有可变

$userID = $_GET['userID']; 

$usqlUser = $db->query("UPDATE tblcareercoach SET fname= '". $UPfname ."', lname= '". $UPlname ."', regioncode= '". $UPregioncode ."', servicecenter= '". $UPservicecenter ."', email= '". $UPemail ."', username= '". $UPusername ."', permission= '". $UPperm ."' WHERE ID= '". $userID ."'"); 

上面的代码什么都不做。我已经印刷了用户ID,并将它与正确的ID号返回,因为它应该,当我手动输入ID号,而不是使用用户ID变量它完美地研究。下面是工作,但我不能手动输入用户ID来利用该系统的每个用户。

$usqlUser = $db->query("UPDATE tblcareercoach SET fname= '". $UPfname ."', lname= '". $UPlname ."', regioncode= '". $UPregioncode ."', servicecenter= '". $UPservicecenter ."', email= '". $UPemail ."', username= '". $UPusername ."', permission= '". $UPperm ."' WHERE ID=34"); 

对此的任何帮助将不胜感激!

这是我整个的PHP代码:

<?php 
    $check = $_SERVER['DOCUMENT_ROOT']; 
    $check .= "/WMW/php/check.php"; 
    include($check); 
    $reg = $_SERVER['DOCUMENT_ROOT']; 
    $reg .= "/WMW/php/NextRegCode.php"; 
    include($reg); 

    $userID = $_GET['userID']; 

    echo $userID; 

    $sqlUpdate = "SELECT * FROM tblcareercoach WHERE ID='". $userID ."'"; 
    $qryUpdate = $db->query($sqlUpdate); 

     while($row = $qryUpdate->fetch_assoc()) { 
      $regioncode = $row["regioncode"]; //done 
      $servicecenter = $row["servicecenter"]; //done 
      $lname = $row["lname"]; //done 
      $fname = $row["fname"]; //done 
      $username = $row["username"]; //done 
      $email = $row["email"]; //done 
      $permission = $row["permission"]; //done 
    } 

if(isset($_POST['form_submit'])) { 
    $UPfname = mysqli_real_escape_string($db, $_POST['first-name']); 
    $UPlname = mysqli_real_escape_string($db, $_POST['last-name']); 
    $UPregioncode = mysqli_real_escape_string($db, $_POST['regioncode']); 
    $UPservicecenter = mysqli_real_escape_string($db, $_POST['servicecenter']); 
    $UPemail = mysqli_real_escape_string($db, $_POST['email']); 
    $UPusername = mysqli_real_escape_string($db, $_POST['username']); 
    $UPperm = $_POST['user-type']; 

    $usqlUser = $db->query("UPDATE tblcareercoach SET fname= '". $UPfname ."', lname= '". $UPlname ."', regioncode= '". $UPregioncode ."', servicecenter= '". $UPservicecenter ."', email= '". $UPemail ."', username= '". $UPusername ."', permission= '". $UPperm ."' WHERE ID='".$userID."'"); 
} 

?> 

好吧,我已经转换一切交给未显示在语句本身的任何错误一份准备好的声明,但我能找到显示

一个PHP错误

用户ID作为一个未定义的指标

什么是奇怪,我是如何做到这不确定的,但后来我还是可以使用变量在不同的SELECT语句中。

$UPfname = mysqli_real_escape_string($db, $_POST['first-name']); 
$UPlname = mysqli_real_escape_string($db, $_POST['last-name']); 
$UPregioncode = mysqli_real_escape_string($db, $_POST['regioncode']); 
$UPservicecenter = mysqli_real_escape_string($db, $_POST['servicecenter']); 
$UPemail = mysqli_real_escape_string($db, $_POST['email']); 
$UPusername = mysqli_real_escape_string($db, $_POST['username']); 
$UPperm = mysqli_real_escape_string($db, $_POST['user-type']); 

$statement = $db->prepare("UPDATE tblcareercoach SET fname=?, lname=?, regioncode=?, servicecenter=?, email=?, username=?, permission=? WHERE ID=?"); 

$statement->bind_param('ssssssii', $UPfname, $UPlname, $UPregioncode, $UPservicecenter, $UPemail, $UPusername, $UPperm, $userID); 
$results = $statement->execute(); 

UPDATE

好这个问题是我的$ _GET变量。我不知道是什么问题所以这里所有的信息。用户看到一个包含用户行的表。点击一行后,他们可以选择删除或更新用户。如果选择更新的弹出显示用URL是这样的:

".../Wupdate_user.php?userID=34" 

这目前显示一个弹出第i个显示所有的被点击利用该代码,该用户的信息的一种形式:

$uID = $_GET['userID']; 

$sqlUpdate = "SELECT * FROM tblcareercoach WHERE ID='". $uID ."'"; 
$qryUpdate = $db->query($sqlUpdate); 

while($row = $qryUpdate->fetch_assoc()) { 
    $regioncode = $row["regioncode"]; //done 
    $servicecenter = $row["servicecenter"]; //done 
    $lname = $row["lname"]; //done 
    $fname = $row["fname"]; //done 
    $username = $row["username"]; //done 
    $email = $row["email"]; //done 
    $permission = $row["permission"]; //done 
} 

上面代码按预期显示所有信息。有一次,我改变窗体上的一些信息并提交,下面的代码被执行:

if(isset($_POST['form_submit'])) { 
    $UPfname = mysqli_real_escape_string($db, $_POST['first-name']); 
    $UPlname = mysqli_real_escape_string($db, $_POST['last-name']); 
    $UPregioncode = mysqli_real_escape_string($db, $_POST['regioncode']); 
    $UPservicecenter = mysqli_real_escape_string($db, $_POST['servicecenter']); 
    $UPemail = mysqli_real_escape_string($db, $_POST['email']); 
    $UPusername = mysqli_real_escape_string($db, $_POST['username']); 
    $UPperm = mysqli_real_escape_string($db, $_POST['user-type']); 

    $statement = $db->prepare("UPDATE tblcareercoach SET fname=?, lname=?, regioncode=?, servicecenter=?, email=?, username=?, permission=? WHERE ID=?"); 

    $statement->bind_param('ssssssii', $UPfname, $UPlname, $UPregioncode, $UPservicecenter, $UPemail, $UPusername, $UPperm, $uID); 
    $results = $statement->execute(); 
    if($results){ 
     print 'Success! record updated'; 
    }else{ 
     print 'Error : ('. $mysqli->errno .') '. $mysqli->error; 
    } 
} 

UPDATE语句打印“成功!记录更新”,但实际上并没有更新在MySQL数据库中的记录。审查后,检查我发现显示出下面的一个PHP错误:

公告:未定义的索引:在 用户ID ... \ update_user.php第9行

我很茫然的这可怎么不确定的,但我依然能在SELECT语句的上方使用它。任何对此的帮助都会很大。

+0

'$ userID'或'$ _GET [ '用户ID']'可能是失败的,你那么,我们不知道这是未来从。错误报告可能是您的朋友。问题不清楚。 –

+0

因为在SELECT查询中使用$ userID来显示数据,所以这两个变量都失败,并且它完全按预期显示。 –

+0

为什么倒票没有评论呢。即使是一个评论侮辱我的智力投票也不如反对票。 –

回答

0

session_start(); $sID = isset($_SESSION['lastID']) ? $_SESSION['lastID'] : ''; $uID = isset($_GET['userID']) ? $_GET['userID'] : ''; if ($uID == '' && $sID != '') {$uID = $sID;}

else{ print 'Error : ('. $mysqli->errno .') '. $mysqli->error; }

$_SESSION['lastID'] = $uID;