Php 导致错误的更新代码,但在我看来没有问题:

Php 导致错误的更新代码,但在我看来没有问题:,php,mysqli,Php,Mysqli,问题2 我现在得到一个错误,代码没有输入到查询的实际身份证号码 以下是错误: 查询错误:您的SQL语法有错误;请查看与MySQL服务器版本对应的手册,以了解第1行“”附近要使用的正确语法 代码已更新以显示新代码。(再次)这次使用隐藏脚本和其他一些调整。我几乎对这项工作失去了希望 Issue 1 Solved: This line of code is brining back and error: $query = "UPDATE ncmr SET ab = '$ab

问题2

我现在得到一个错误,代码没有输入到查询的实际身份证号码

以下是错误:

查询错误:您的SQL语法有错误;请查看与MySQL服务器版本对应的手册,以了解第1行“”附近要使用的正确语法

代码已更新以显示新代码。(再次)这次使用隐藏脚本和其他一些调整。我几乎对这项工作失去了希望

Issue 1 Solved:    
This line of code is brining back and error: 

        $query = "UPDATE ncmr SET ab = '$ab', date = '$date', part = '$part', rev = '$rev' , partdesc = '$partdesc' , ncmrqty = '$ncmrqty' , comp = '$comp' , ncmrid = '$ncmrid' , rma = '$rma' , jno = '$jno' , fdt = '$fdt' , cof = '$cof' , fab1 = '$fab1' , fab2 = '$fab2' , fab3 = '$fab3' , non = '$non' , dis = '$dis' , comm = '$comm' , caad = '$caad' , po = '$po' , pod = '$pod' , dri = '$dri'  WHERE id = "$_GET['id']"";

    The error is: 

    **Parse error: syntax error, unexpected T_VARIABLE in /home/pawz/public_html/kaboomlabs.com/testbed/edit.php on line 49**

I can't figure out why it is doing it, if someone can show me my mistake it be greatlyfully appreciated.
好的,这是完整的代码

            <?php
require_once('connectvars.php');
echo '<div id="postwrap">'
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  <title>PDI NCMR - Edit</title>
  <link rel="stylesheet" type="text/css" href="CSS/postie.css" />
</head>
<body>
   <div id="logo">
    <img src="../images/PDI_Logo_2.1.gif" alt="PDI Logo" />
</div>

<?php

      $id=0;
      if(isset($_GET['id']))
         $id= mysqli_real_escape_string($dbc, trim($_GET['id']));

      if (isset($_POST['submit'])) {
            $id= mysqli_real_escape_string($dbc, trim($_POST["id"]));
// Connect to the database
    $dbc = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME);

// Enter data into the database
    $ab = mysqli_real_escape_string($dbc, trim($_POST['ab']));
    $date = mysqli_real_escape_string($dbc, trim(date('Y-m-d',strtotime ($_POST['date']))));
    $part = mysqli_real_escape_string($dbc, trim($_POST['part']));
    $rev = mysqli_real_escape_string($dbc, trim($_POST['rev']));
    $partdesc = mysqli_real_escape_string($dbc, trim($_POST['partdesc']));
    $ncmrqty = mysqli_real_escape_string($dbc, trim($_POST['ncmrqty']));
    $comp = mysqli_real_escape_string($dbc, trim($_POST['comp']));
    $ncmrid = mysqli_real_escape_string($dbc, trim($_POST['ncmrid']));
    $rma = mysqli_real_escape_string($dbc, trim($_POST['rma']));
    $jno = mysqli_real_escape_string($dbc, trim($_POST['jno']));
    $fdt = mysqli_real_escape_string($dbc, trim($_POST['fdt']));
    $cof = mysqli_real_escape_string($dbc, trim($_POST['cof']));
    $fab1= mysqli_real_escape_string($dbc, trim($_POST['fab1']));
    $fab2= mysqli_real_escape_string($dbc, trim($_POST['fab2']));
    $fab3= mysqli_real_escape_string($dbc, trim($_POST['fab3']));
    $non= mysqli_real_escape_string($dbc, trim($_POST['non']));
    $dis= mysqli_real_escape_string($dbc, trim($_POST['dis']));
    $comm= mysqli_real_escape_string($dbc, trim($_POST['comm']));
    $caad= mysqli_real_escape_string($dbc, trim($_POST['caad']));
    $po= mysqli_real_escape_string($dbc, trim($_POST['po']));
    $pod = mysqli_real_escape_string($dbc, trim(date('Y-m-d',strtotime($_POST['pod']))));
    $dri = mysqli_real_escape_string($dbc, trim(date('Y-m-d',strtotime($_POST['dri']))));

    $query = "UPDATE ncmr SET ab = '$ab', date = '$date', part = '$part', rev = '$rev' , partdesc = '$partdesc' , ncmrqty = '$ncmrqty' , comp = '$comp' , ncmrid = '$ncmrid' , rma = '$rma' , jno = '$jno' , fdt = '$fdt' , cof = '$cof' , fab1 = '$fab1' , fab2 = '$fab2' , fab3 = '$fab3' , non = '$non' , dis = '$dis' , comm = '$comm' , caad = '$caad' , po = '$po' , pod = '$pod' , dri = '$dri'  WHERE id = $id";

// echo your raw query and look for obvious errors
     echo "Query is : " . $query . "<br />";

// and at least use a basic mechanism to trap possibles errors
       mysqli_query($dbc, $query)  or die('Query Error : ' . mysqli_error($dbc));


// Confirm success with the user
        echo '<p>If you wish to edit more NCMRs, please <a href="list.php">go to the admin page!</a></p>';

        // echo your raw query and look for obvious errors
     echo "Query is : " . $query . "<br />";
// Clear the form data
    $id = "";
    $ab = "";
    $date = "";
    $part = "";
    $rev = "";
    $partdesc = "";
    $ncmrqty = "";
    $comp = "";
    $ncmrid = "";
    $rma = "";
    $jno = "";
    $fdt = "";
    $cof = "";
    $fab1= "";
    $fab2= "";
    $fab3= "";
    $non= "";
    $dis= "";
    $comm= "";
    $caad= "";
    $po= "";
    $pod = "";
    $dri = "";
            mysqli_close($dbc);
            }

  else {    

// Connect to the database
  $dbc = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME);
// Grab the profile data from the database
if (!isset($_GET['id'])) {
    $query = "SELECT * FROM ncmr WHERE id = '$id'";
  }
  else {
    $query = "SELECT * FROM ncmr WHERE id = '$id'";
  }

  $data = mysqli_query($dbc, $query);

  if (mysqli_num_rows($data) == 1) { 
// The user row was found so display the user data
    $row = mysqli_fetch_array($data);
echo "<form action='".$_SERVER['PHP_SELF']."' method='post'>";
    echo '<fieldset>';

        echo '<div id="box1">';
            if (empty($row['ab'])) $row['ab'] = "Empty";
            if (empty($row['date'])) $row['date'] = "Empty";
            if (empty($row['part'])) $row['part'] = "Empty";
            if (empty($row['rev'])) $row['rev'] = "Empty";
            if (empty($row['partdesc'])) $row['partdesc'] = "Empty";
            if (empty($row['ncmrqty'])) $row['ncmrqty'] = "Empty";
            echo '<div id="ab"><span class="b">Added By:&nbsp;&nbsp;</span><input type="text" name="ab" value="' . $row['ab'] . '" /></div>';
            echo '<div id="date"><span class="b">Date Filed:&nbsp;&nbsp;</span><input type="text" name="date" value="' . $row['date'] . '" /></div>';
            echo '<div id="part"><span class="b">Part Number:&nbsp;&nbsp;</span><input type="text" name="part" value="' . $row['part'] . '" /></div>';
            echo '<div id="rev"><span class="b">Part Revision:&nbsp;&nbsp;</span><input type="text" name="rev" value="' . $row['rev'] . '" /></div>';
            echo '<div id="partdesc"><span class="b">Part Description:&nbsp;&nbsp;</span><textarea rows="4" cols="22">' . $row['partdesc'] . '</textarea></div>';
            echo '<div id="ncmrqty"><span class="b">NCMR Qty:&nbsp;&nbsp;</span><input type="text" name="ncmrqty" value="' . $row['ncmrqty'] . '" /></div>';
        echo '</div>';

//Company, Customer NCMR, Internal RMA, and Job Number
        echo '<div id="box2">';
            if (empty($row['comp'])) $row['comp'] = "Empty";
            if (empty($row['ncmrid'])) $row['ncmrid'] = "Empty";
            if (empty($row['rma'])) $row['rma'] = "Empty";
            if (empty($row['jno'])) $row['jno'] = "Empty";
                echo '<div id="comp"><span class="b">Company:&nbsp;&nbsp;</span><input type="text" name="comp" value="' . $row['comp'] . '" /></div>';
                    echo '<div id="ncmrid"><span class="b">Customer NCMR ID:&nbsp;&nbsp;</span><input type="text" name="ncmrid" value="' . $row['ncmrid'] . '" /></div>';
                    echo '<div id="rma"><span class="b">Internal RMA #:&nbsp;&nbsp;</span><input type="text" name="rma" value="' . $row['rma'] . '" /></div>';
                    echo '<div id="jno"><span class="b">Job #:&nbsp;&nbsp;</span><input type="text" name="jno" value="' . $row['jno'] . '" /></div>';
        echo '</div>';

//Type of Failure and Class of Failure
        echo '<div id="box3">';
            echo '<h2>Failure</h2>';
                echo '<div id="cof"><span class="b">Class of Failure:&nbsp;&nbsp;</span><input type="text" name="cof"  size="15" value="' . $row['cof'] . '" /></div>';
                echo '<div id="fdt"><span class="b">Failure Due To:&nbsp;&nbsp;</span><input type="text" name="fdt"  size="15" value="' . $row['fdt'] . '" /></div>';

            echo '</div>';

//Fabricators
        echo '<div id="box4">';
            echo '<h2>Fabricators</h2>';
if ($row['fab1']="--None--")
{
    echo'<div id="fab1">';
    $mysqli = new mysqli(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME); 
    $mysqli->select_db('user');
    $result = $mysqli->query("SELECT * FROM user"); 
    echo "<SELECT name='fab1'>\n";
    while($row = $result->fetch_assoc())
    {
        echo "<option value='{$row['user']}'>{$row['user']}</option>\n";
    }
    echo "</select>\n";
    echo '</div>';
}
else
{
    echo'<div id="fab1">';
    $mysqli = new mysqli(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME); 
    $mysqli->select_db('user');
    $result = $mysqli->query("SELECT * FROM user"); 
    echo "<SELECT name='fab1'>\n";
    while($row = $result->fetch_assoc())
    {
        echo "<option value='{$row['user']}'>{$row['user']}</option>\n";
    }
    echo "</select>\n";
    echo '</div>';
}


if ($row['fab2']="--None--")
{
    echo'<div id="fab2">';
    $mysqli = new mysqli(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME); 
    $mysqli->select_db('user');
    $result = $mysqli->query("SELECT * FROM user"); 
    echo "<SELECT name='fab2'>\n";
    while($row = $result->fetch_assoc())
    {
        echo "<option value='{$row['user']}'>{$row['user']}</option>\n";
    }
    echo "</select>\n";
    echo '</div>';
}
else
{
    echo '<div id="fab2"><span class="b"></span><input type="text" name="fab1"  size="20" value="' . $row['fab1'] . '" /></div>';
    echo '</div>';
}
if ($row['fab3']="--None--")
{
    echo'<div id="fab3">';
    $mysqli = new mysqli(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME); 
    $mysqli->select_db('user');
    $result = $mysqli->query("SELECT * FROM user"); 
    echo "<SELECT name='fab3'>\n";
    while($row = $result->fetch_assoc())
    {
        echo "<option value='{$row['user']}'>{$row['user']}</option>\n";
    }
    echo "</select>\n";
    echo '</div>';
}
else
{
    echo '<div id="fab3"><span class="b"></span><input type="text" name="fab1"  size="20" value="' . $row['fab1'] . '" /></div>';
    echo '</div>';
}       echo '</div>';

//Nonconformity, Disposition, Comments and Comments & Additional Details
        echo '<div id="box5">';
            if (empty($row['non'])) $row['non'] = "Empty";
            if (empty($row['dis'])) $row['dis'] = "Empty";
            if (empty($row['comm'])) $row['comm'] = "Empty";
            if (empty($row['caad'])) $row['caad'] = "Empty";

            echo '<div id="non"><span class="b">Nonconformity:&nbsp;&nbsp;</span><textarea rows="4" cols="105">' . $row['non'] . '</textarea></div>';
            echo '<div id="dis"><span class="b">Disposition:&nbsp;&nbsp;</span><textarea rows="4" cols="105">' . $row['dis'] . '</textarea></div>';
            echo '<div id="comm"><span class="b">Comments:&nbsp;&nbsp;</span><textarea rows="4" cols="105">' . $row['comm'] . '</textarea></div>';
            echo '<div id="caad"><span class="b">Comments and/or Additional Details:&nbsp;&nbsp;</span><textarea rows="4" cols="105">' . $row['caad'] . '</textarea></div>';

                echo '<div id="podr">';
                        if (empty($row['po'])) $row['po'] ="Empty";
                        if (empty($row['pod'])) $row['pod'] ="Empty";
                        if (empty($row['dir'])) $row['dri'] ="Empty";

                    echo '<div id="po"><span class="b">PO:&nbsp;&nbsp;</span><input type="text" name="po"  size="7" value="' . $row['po'] . '" /></div>';
                    echo '<div id="pod"><span class="b">PO Date:&nbsp;&nbsp;</span><input type="text" name="pod"  size="7" value="' . $row['pod'] . '" /></div>';
                    echo '<div id="dri"><span class="b">Date Received:&nbsp;&nbsp;</span><input type="text" name="dri"  size="7" value="' . $row['dri'] . '" /></div>';
                echo '</div>';
            echo '<div id="button2"><input type="submit" value="Submit Edits" name="submit" /></div>';
//Save ID so it can be used with POST request.
echo "<input type='hidden' value='$id' name='id'/>"; 

        echo '</div>';
    echo '</fieldset>';
echo '</form>';
        }
    }

echo '</div>';

?>
</body>
</html>

PDI NCMR-编辑

您需要在
$\u GET['id']
thingie之前和之后使用串联运算符
。或将其嵌入字符串:

    ".... WHERE id = {$_GET['id']}";

(请注意,您的
$\u GET['id']
没有经过消毒,而是直接从网络输入中获取。这不是最好的做法)。

您在此处忘记连接运算符:
“$\u GET['id']”“
,应该是
”$\u GET['id']。;“


每次您看到一个解析错误:语法错误,错误就在您这边。你有文件名和行号,你只需要看一下:-)

我对php的记忆越来越模糊,但这部分看起来是错误的:

WHERE id = "$_GET['id']"";
我假设您在这里使用双引号是为了避免与变量中的单引号混淆,但我想您可能需要某种串联运算符。即:

WHERE id = ".$_GET['id'];
或者你也可以这样做

$getid = $_GET['id']

然后在表达式中使用更简单的变量名。这将与处理其余变量的方式更加一致…

像处理其他值一样,从查询字符串中获取
id
。它的连接不正确。

您忘记为字符串连接添加运算符
。它应该是这样的:

$query = "UPDATE ncmr SET ab = '$ab', date = '$date', part = '$part', rev = '$rev' , partdesc = '$partdesc' , ncmrqty = '$ncmrqty' , comp = '$comp' , ncmrid = '$ncmrid' , rma = '$rma' , jno = '$jno' , fdt = '$fdt' , cof = '$cof' , fab1 = '$fab1' , fab2 = '$fab2' , fab3 = '$fab3' , non = '$non' , dis = '$dis' , comm = '$comm' , caad = '$caad' , po = '$po' , pod = '$pod' , dri = '$dri'  WHERE id = ".$_GET['id'];
而且,非常重要的一点是:不要在SQL查询中使用未经验证的请求数据,否则您将容易受到攻击!在这种情况下,如果id始终是整数,则在
$\u GET['id']
之前添加(int)将有助于:

$query = "UPDATE ncmr SET ab = '$ab', date = '$date', part = '$part', rev = '$rev' , partdesc = '$partdesc' , ncmrqty = '$ncmrqty' , comp = '$comp' , ncmrid = '$ncmrid' , rma = '$rma' , jno = '$jno' , fdt = '$fdt' , cof = '$cof' , fab1 = '$fab1' , fab2 = '$fab2' , fab3 = '$fab3' , non = '$non' , dis = '$dis' , comm = '$comm' , caad = '$caad' , po = '$po' , pod = '$pod' , dri = '$dri'  WHERE id = ".(int)$_GET['id'];

您在末尾错误地引用了
$\u GET['id']

WHERE id = "$_GET['id']"
// should be
WHERE id = '{$_GET['id']}'
但是,您应该首先使用mysql\u real\u escape\u string()对其进行转义。


好的,在做了大量的工作、转换代码和不眠之夜之后,我似乎在这里通过帮助回答了我自己的问题,我对那些给了我正确方向的答案的人表示敬意

以下是我所做的,从原始代码中我更改了这些位:

第20行到第28行:我把访问数据库放在脚本之前,不要问我为什么以前没有看到这个,但我做到了,我确信这是一个初学者的错误,但它仍然会发生,特别是因为我还是一个初学者

这是现在看起来第20-28行之间的代码

// Connect to the database
    $dbc = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME);

      $id= mysqli_real_escape_string($dbc, trim(0));
      if(isset($_GET['id']))
         $id= mysqli_real_escape_string($dbc, trim($_GET['id']));

      if (isset($_POST['submit'])) {
            $id= mysqli_real_escape_string($dbc, trim($_POST["id"]));
第54行按照此处的建议重写

现在它的末尾有正确数量的引号,看起来像这样

$query = "UPDATE ncmr SET ab = '$ab', date = '$date', part = '$part', rev = '$rev' , partdesc = '$partdesc' , ncmrqty = '$ncmrqty' , comp = '$comp' , ncmrid = '$ncmrid' , rma = '$rma' , jno = '$jno' , fdt = '$fdt' , cof = '$cof' , fab1 = '$fab1' , fab2 = '$fab2' , fab3 = '$fab3' , non = '$non' , dis = '$dis' , comm = '$comm' , caad = '$caad' , po = '$po' , pod = '$pod' , dri = '$dri'  WHERE id = '$id'";[/code]
我删除了第67行

这个:

 echo "Query is : " . $query . "<br />";
这就是所有的编辑

这是完整的代码

<?php
require_once('connectvars.php');
echo '<div id="postwrap">'
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  <title>Edit</title>
      <link rel="stylesheet" type="text/css" href="CSS/postie.css" />
</head>
<body>
   <div id="logo">
    <img src="../images/PDI_Logo_2.1.gif" alt="PDI Logo" />
</div>

<?php
// Connect to the database
    $dbc = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME);

      $id= mysqli_real_escape_string($dbc, trim(0));
      if(isset($_GET['id']))
         $id= mysqli_real_escape_string($dbc, trim($_GET['id']));

      if (isset($_POST['submit'])) {
            $id= mysqli_real_escape_string($dbc, trim($_POST["id"]));

// Enter data into the database
    $ab = mysqli_real_escape_string($dbc, trim($_POST['ab']));
    $date = mysqli_real_escape_string($dbc, trim(date('Y-m-d',strtotime ($_POST['date']))));
    $part = mysqli_real_escape_string($dbc, trim($_POST['part']));
    $rev = mysqli_real_escape_string($dbc, trim($_POST['rev']));
    $partdesc = mysqli_real_escape_string($dbc, trim($_POST['partdesc']));
    $ncmrqty = mysqli_real_escape_string($dbc, trim($_POST['ncmrqty']));
    $comp = mysqli_real_escape_string($dbc, trim($_POST['comp']));
    $ncmrid = mysqli_real_escape_string($dbc, trim($_POST['ncmrid']));
    $rma = mysqli_real_escape_string($dbc, trim($_POST['rma']));
    $jno = mysqli_real_escape_string($dbc, trim($_POST['jno']));
    $fdt = mysqli_real_escape_string($dbc, trim($_POST['fdt']));
    $cof = mysqli_real_escape_string($dbc, trim($_POST['cof']));
    $fab1= mysqli_real_escape_string($dbc, trim($_POST['fab1']));
    $fab2= mysqli_real_escape_string($dbc, trim($_POST['fab2']));
    $fab3= mysqli_real_escape_string($dbc, trim($_POST['fab3']));
    $non= mysqli_real_escape_string($dbc, trim($_POST['non']));
    $dis= mysqli_real_escape_string($dbc, trim($_POST['dis']));
    $comm= mysqli_real_escape_string($dbc, trim($_POST['comm']));
    $caad= mysqli_real_escape_string($dbc, trim($_POST['caad']));
    $po= mysqli_real_escape_string($dbc, trim($_POST['po']));
    $pod = mysqli_real_escape_string($dbc, trim(date('Y-m-d',strtotime($_POST['pod']))));
    $dri = mysqli_real_escape_string($dbc, trim(date('Y-m-d',strtotime($_POST['dri']))));

    $query = "UPDATE ncmr SET ab = '$ab', date = '$date', part = '$part', rev = '$rev' , partdesc = '$partdesc' , ncmrqty = '$ncmrqty' , comp = '$comp' , ncmrid = '$ncmrid' , rma = '$rma' , jno = '$jno' , fdt = '$fdt' , cof = '$cof' , fab1 = '$fab1' , fab2 = '$fab2' , fab3 = '$fab3' , non = '$non' , dis = '$dis' , comm = '$comm' , caad = '$caad' , po = '$po' , pod = '$pod' , dri = '$dri'  WHERE id = '$id'";

// echo your raw query and look for obvious errors
     echo "Query is : " . $query . "<br />";

// and at least use a basic mechanism to trap possibles errors
       mysqli_query($dbc, $query)  or die('Query Error : ' . mysqli_error($dbc));


// Confirm success with the user
        echo '<p>If you wish to edit more NCMRs, please <a href="list.php">go to the admin page!</a></p>';

// Clear the form data
    $id = "";
    $ab = "";
    $date = "";
    $part = "";
    $rev = "";
    $partdesc = "";
    $ncmrqty = "";
    $comp = "";
    $ncmrid = "";
    $rma = "";
    $jno = "";
    $fdt = "";
    $cof = "";
    $fab1= "";
    $fab2= "";
    $fab3= "";
    $non= "";
    $dis= "";
    $comm= "";
    $caad= "";
    $po= "";
    $pod = "";
    $dri = "";
            mysqli_close($dbc);
            }

  else {    

// Grab the profile data from the database
if (!isset($_GET['id'])) {
    $query = "SELECT * FROM ncmr WHERE id = '$id'";
  }
  else {
    $query = "SELECT * FROM ncmr WHERE id = '$id'";
  }

  $data = mysqli_query($dbc, $query);

  if (mysqli_num_rows($data) == 1) { 
// The user row was found so display the user data
    $row = mysqli_fetch_array($data);
echo "<form action='".$_SERVER['PHP_SELF']."' method='post'>";
    echo '<fieldset>';

        echo '<div id="box1">';
            if (empty($row['ab'])) $row['ab'] = "Empty";
            if (empty($row['date'])) $row['date'] = "Empty";
            if (empty($row['part'])) $row['part'] = "Empty";
            if (empty($row['rev'])) $row['rev'] = "Empty";
            if (empty($row['partdesc'])) $row['partdesc'] = "Empty";
            if (empty($row['ncmrqty'])) $row['ncmrqty'] = "Empty";
            echo '<div id="ab"><span class="b">Added By:&nbsp;&nbsp;</span><input type="text" name="ab" value="' . $row['ab'] . '" /></div>';
            echo '<div id="date"><span class="b">Date Filed:&nbsp;&nbsp;</span><input type="text" name="date" value="' . $row['date'] . '" /></div>';
            echo '<div id="part"><span class="b">Part Number:&nbsp;&nbsp;</span><input type="text" name="part" value="' . $row['part'] . '" /></div>';
            echo '<div id="rev"><span class="b">Part Revision:&nbsp;&nbsp;</span><input type="text" name="rev" value="' . $row['rev'] . '" /></div>';
            echo '<div id="partdesc"><span class="b">Part Description:&nbsp;&nbsp;</span><textarea rows="4" cols="22">' . $row['partdesc'] . '</textarea></div>';
            echo '<div id="ncmrqty"><span class="b">NCMR Qty:&nbsp;&nbsp;</span><input type="text" name="ncmrqty" value="' . $row['ncmrqty'] . '" /></div>';
        echo '</div>';

//Company, Customer NCMR, Internal RMA, and Job Number
        echo '<div id="box2">';
            if (empty($row['comp'])) $row['comp'] = "Empty";
            if (empty($row['ncmrid'])) $row['ncmrid'] = "Empty";
            if (empty($row['rma'])) $row['rma'] = "Empty";
            if (empty($row['jno'])) $row['jno'] = "Empty";
                echo '<div id="comp"><span class="b">Company:&nbsp;&nbsp;</span><input type="text" name="comp" value="' . $row['comp'] . '" /></div>';
                    echo '<div id="ncmrid"><span class="b">Customer NCMR ID:&nbsp;&nbsp;</span><input type="text" name="ncmrid" value="' . $row['ncmrid'] . '" /></div>';
                    echo '<div id="rma"><span class="b">Internal RMA #:&nbsp;&nbsp;</span><input type="text" name="rma" value="' . $row['rma'] . '" /></div>';
                    echo '<div id="jno"><span class="b">Job #:&nbsp;&nbsp;</span><input type="text" name="jno" value="' . $row['jno'] . '" /></div>';
        echo '</div>';

//Type of Failure and Class of Failure
        echo '<div id="box3">';
            echo '<h2>Failure</h2>';
                echo '<div id="cof"><span class="b">Class of Failure:&nbsp;&nbsp;</span><input type="text" name="cof"  size="15" value="' . $row['cof'] . '" /></div>';
                echo '<div id="fdt"><span class="b">Failure Due To:&nbsp;&nbsp;</span><input type="text" name="fdt"  size="15" value="' . $row['fdt'] . '" /></div>';

            echo '</div>';

//Fabricators
        echo '<div id="box4">';
            echo '<h2>Fabricators</h2>';
if ($row['fab1']=="--None--")
{
    echo'<div id="fab1">';
    $mysqli = new mysqli(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME); 
    $mysqli->select_db('user');
    $result = $mysqli->query("SELECT * FROM user"); 
    echo "<SELECT name='fab1'>\n";
    while($row = $result->fetch_assoc())
    {
        echo "<option value='{$row['user']}'>{$row['user']}</option>\n";
    }
    echo "</select>\n";
    echo '</div>';
}
else
{
    echo'<div id="fab1">';
    $mysqli = new mysqli(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME); 
    $mysqli->select_db('user');
    $result = $mysqli->query("SELECT * FROM user"); 
    echo "<SELECT name='fab1'>\n";
    while($row = $result->fetch_assoc())
    {
        echo "<option value='{$row['user']}'>{$row['user']}</option>\n";
    }
    echo "</select>\n";
    echo '</div>';
}


if ($row['fab2']="--None--")
{
    echo'<div id="fab2">';
    $mysqli = new mysqli(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME); 
    $mysqli->select_db('user');
    $result = $mysqli->query("SELECT * FROM user"); 
    echo "<SELECT name='fab2'>\n";
    while($row = $result->fetch_assoc())
    {
        echo "<option value='{$row['user']}'>{$row['user']}</option>\n";
    }
    echo "</select>\n";
    echo '</div>';
}
else
{
    echo '<div id="fab2"><span class="b"></span><input type="text" name="fab1"  size="20" value="' . $row['fab1'] . '" /></div>';
    echo '</div>';
}
if ($row['fab3']="--None--")
{
    echo'<div id="fab3">';
    $mysqli = new mysqli(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME); 
    $mysqli->select_db('user');
    $result = $mysqli->query("SELECT * FROM user"); 
    echo "<SELECT name='fab3'>\n";
    while($row = $result->fetch_assoc())
    {
        echo "<option value='{$row['user']}'>{$row['user']}</option>\n";
    }
    echo "</select>\n";
    echo '</div>';
}
else
{
    echo '<div id="fab3"><span class="b"></span><input type="text" name="fab1"  size="20" value="' . $row['fab1'] . '" /></div>';
    echo '</div>';
}       echo '</div>';

//Nonconformity, Disposition, Comments and Comments & Additional Details
        echo '<div id="box5">';
            if (empty($row['non'])) $row['non'] = "Empty";
            if (empty($row['dis'])) $row['dis'] = "Empty";
            if (empty($row['comm'])) $row['comm'] = "Empty";
            if (empty($row['caad'])) $row['caad'] = "Empty";

            echo '<div id="non"><span class="b">Nonconformity:&nbsp;&nbsp;</span><textarea rows="4" cols="105">' . $row['non'] . '</textarea></div>';
            echo '<div id="dis"><span class="b">Disposition:&nbsp;&nbsp;</span><textarea rows="4" cols="105">' . $row['dis'] . '</textarea></div>';
            echo '<div id="comm"><span class="b">Comments:&nbsp;&nbsp;</span><textarea rows="4" cols="105">' . $row['comm'] . '</textarea></div>';
            echo '<div id="caad"><span class="b">Comments and/or Additional Details:&nbsp;&nbsp;</span><textarea rows="4" cols="105">' . $row['caad'] . '</textarea></div>';

                echo '<div id="podr">';
                        if (empty($row['po'])) $row['po'] ="Empty";
                        if (empty($row['pod'])) $row['pod'] ="Empty";
                        if (empty($row['dir'])) $row['dri'] ="Empty";

                    echo '<div id="po"><span class="b">PO:&nbsp;&nbsp;</span><input type="text" name="po"  size="7" value="' . $row['po'] . '" /></div>';
                    echo '<div id="pod"><span class="b">PO Date:&nbsp;&nbsp;</span><input type="text" name="pod"  size="7" value="' . $row['pod'] . '" /></div>';
                    echo '<div id="dri"><span class="b">Date Received:&nbsp;&nbsp;</span><input type="text" name="dri"  size="7" value="' . $row['dri'] . '" /></div>';
                echo '</div>';
            echo '<div id="button2"><input type="submit" value="Submit Edits" name="submit" /></div>';
//Save ID so it can be used with POST request.
echo "<input type='hidden' value='$id' name='id'/>"; 

        echo '</div>';
    echo '</fieldset>';
echo '</form>';
        }
    }

echo '</div>';

?>
</body>
</html>

编辑

警告您的代码易受
where
子句中的sql注入攻击@很高兴你警告了OP可能的SQL注入,但是你没有给出任何解决这个问题的方向。也许你可以为OP添加一个链接或其他内容,以便阅读和学习?除了原始问题的解决方案外,还可以在我的答案中找到说明!:)由于整个代码都在这里,我假定没有其他SQL条件,所以;可以安全地添加(它只是更干净)。点头更多,我认为
原文中有语句的结尾
而不是字符串的一部分。我个人不认为在;使它更干净,但这是个人偏好。@Damien,你的意思是它应该是
“$\u GET['id']”;
?谢谢你的指导,尽管它让我朝着正确的方向前进。我刚刚更新了代码,现在有一个新问题。依我看,应该是“$\u GET['id']”;或者“$\u GET['id'];为什么每个人都忽略了它?$id=mysqli\u real\u escape\u string($dbc,trim($\u GET['id']));卫生脚本的第一行。@MattRidge我看到它在那里,但你仍然在使用
$\u GET['id']
直接在您的查询中。@MattRidge最突出的不是一大块转义变量,而是SQL字符串中唯一一个未转义的变量。我更改了它,很抱歉我想在原始页面上更新它,但帖子仍然没有通过ID。@MattRidge所有其他值都来自
$\u post
id是否真的来自
$\u GET
,好像它是在表单操作中直接传递的?
// Connect to the database
  $dbc = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME);
<?php
require_once('connectvars.php');
echo '<div id="postwrap">'
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  <title>Edit</title>
      <link rel="stylesheet" type="text/css" href="CSS/postie.css" />
</head>
<body>
   <div id="logo">
    <img src="../images/PDI_Logo_2.1.gif" alt="PDI Logo" />
</div>

<?php
// Connect to the database
    $dbc = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME);

      $id= mysqli_real_escape_string($dbc, trim(0));
      if(isset($_GET['id']))
         $id= mysqli_real_escape_string($dbc, trim($_GET['id']));

      if (isset($_POST['submit'])) {
            $id= mysqli_real_escape_string($dbc, trim($_POST["id"]));

// Enter data into the database
    $ab = mysqli_real_escape_string($dbc, trim($_POST['ab']));
    $date = mysqli_real_escape_string($dbc, trim(date('Y-m-d',strtotime ($_POST['date']))));
    $part = mysqli_real_escape_string($dbc, trim($_POST['part']));
    $rev = mysqli_real_escape_string($dbc, trim($_POST['rev']));
    $partdesc = mysqli_real_escape_string($dbc, trim($_POST['partdesc']));
    $ncmrqty = mysqli_real_escape_string($dbc, trim($_POST['ncmrqty']));
    $comp = mysqli_real_escape_string($dbc, trim($_POST['comp']));
    $ncmrid = mysqli_real_escape_string($dbc, trim($_POST['ncmrid']));
    $rma = mysqli_real_escape_string($dbc, trim($_POST['rma']));
    $jno = mysqli_real_escape_string($dbc, trim($_POST['jno']));
    $fdt = mysqli_real_escape_string($dbc, trim($_POST['fdt']));
    $cof = mysqli_real_escape_string($dbc, trim($_POST['cof']));
    $fab1= mysqli_real_escape_string($dbc, trim($_POST['fab1']));
    $fab2= mysqli_real_escape_string($dbc, trim($_POST['fab2']));
    $fab3= mysqli_real_escape_string($dbc, trim($_POST['fab3']));
    $non= mysqli_real_escape_string($dbc, trim($_POST['non']));
    $dis= mysqli_real_escape_string($dbc, trim($_POST['dis']));
    $comm= mysqli_real_escape_string($dbc, trim($_POST['comm']));
    $caad= mysqli_real_escape_string($dbc, trim($_POST['caad']));
    $po= mysqli_real_escape_string($dbc, trim($_POST['po']));
    $pod = mysqli_real_escape_string($dbc, trim(date('Y-m-d',strtotime($_POST['pod']))));
    $dri = mysqli_real_escape_string($dbc, trim(date('Y-m-d',strtotime($_POST['dri']))));

    $query = "UPDATE ncmr SET ab = '$ab', date = '$date', part = '$part', rev = '$rev' , partdesc = '$partdesc' , ncmrqty = '$ncmrqty' , comp = '$comp' , ncmrid = '$ncmrid' , rma = '$rma' , jno = '$jno' , fdt = '$fdt' , cof = '$cof' , fab1 = '$fab1' , fab2 = '$fab2' , fab3 = '$fab3' , non = '$non' , dis = '$dis' , comm = '$comm' , caad = '$caad' , po = '$po' , pod = '$pod' , dri = '$dri'  WHERE id = '$id'";

// echo your raw query and look for obvious errors
     echo "Query is : " . $query . "<br />";

// and at least use a basic mechanism to trap possibles errors
       mysqli_query($dbc, $query)  or die('Query Error : ' . mysqli_error($dbc));


// Confirm success with the user
        echo '<p>If you wish to edit more NCMRs, please <a href="list.php">go to the admin page!</a></p>';

// Clear the form data
    $id = "";
    $ab = "";
    $date = "";
    $part = "";
    $rev = "";
    $partdesc = "";
    $ncmrqty = "";
    $comp = "";
    $ncmrid = "";
    $rma = "";
    $jno = "";
    $fdt = "";
    $cof = "";
    $fab1= "";
    $fab2= "";
    $fab3= "";
    $non= "";
    $dis= "";
    $comm= "";
    $caad= "";
    $po= "";
    $pod = "";
    $dri = "";
            mysqli_close($dbc);
            }

  else {    

// Grab the profile data from the database
if (!isset($_GET['id'])) {
    $query = "SELECT * FROM ncmr WHERE id = '$id'";
  }
  else {
    $query = "SELECT * FROM ncmr WHERE id = '$id'";
  }

  $data = mysqli_query($dbc, $query);

  if (mysqli_num_rows($data) == 1) { 
// The user row was found so display the user data
    $row = mysqli_fetch_array($data);
echo "<form action='".$_SERVER['PHP_SELF']."' method='post'>";
    echo '<fieldset>';

        echo '<div id="box1">';
            if (empty($row['ab'])) $row['ab'] = "Empty";
            if (empty($row['date'])) $row['date'] = "Empty";
            if (empty($row['part'])) $row['part'] = "Empty";
            if (empty($row['rev'])) $row['rev'] = "Empty";
            if (empty($row['partdesc'])) $row['partdesc'] = "Empty";
            if (empty($row['ncmrqty'])) $row['ncmrqty'] = "Empty";
            echo '<div id="ab"><span class="b">Added By:&nbsp;&nbsp;</span><input type="text" name="ab" value="' . $row['ab'] . '" /></div>';
            echo '<div id="date"><span class="b">Date Filed:&nbsp;&nbsp;</span><input type="text" name="date" value="' . $row['date'] . '" /></div>';
            echo '<div id="part"><span class="b">Part Number:&nbsp;&nbsp;</span><input type="text" name="part" value="' . $row['part'] . '" /></div>';
            echo '<div id="rev"><span class="b">Part Revision:&nbsp;&nbsp;</span><input type="text" name="rev" value="' . $row['rev'] . '" /></div>';
            echo '<div id="partdesc"><span class="b">Part Description:&nbsp;&nbsp;</span><textarea rows="4" cols="22">' . $row['partdesc'] . '</textarea></div>';
            echo '<div id="ncmrqty"><span class="b">NCMR Qty:&nbsp;&nbsp;</span><input type="text" name="ncmrqty" value="' . $row['ncmrqty'] . '" /></div>';
        echo '</div>';

//Company, Customer NCMR, Internal RMA, and Job Number
        echo '<div id="box2">';
            if (empty($row['comp'])) $row['comp'] = "Empty";
            if (empty($row['ncmrid'])) $row['ncmrid'] = "Empty";
            if (empty($row['rma'])) $row['rma'] = "Empty";
            if (empty($row['jno'])) $row['jno'] = "Empty";
                echo '<div id="comp"><span class="b">Company:&nbsp;&nbsp;</span><input type="text" name="comp" value="' . $row['comp'] . '" /></div>';
                    echo '<div id="ncmrid"><span class="b">Customer NCMR ID:&nbsp;&nbsp;</span><input type="text" name="ncmrid" value="' . $row['ncmrid'] . '" /></div>';
                    echo '<div id="rma"><span class="b">Internal RMA #:&nbsp;&nbsp;</span><input type="text" name="rma" value="' . $row['rma'] . '" /></div>';
                    echo '<div id="jno"><span class="b">Job #:&nbsp;&nbsp;</span><input type="text" name="jno" value="' . $row['jno'] . '" /></div>';
        echo '</div>';

//Type of Failure and Class of Failure
        echo '<div id="box3">';
            echo '<h2>Failure</h2>';
                echo '<div id="cof"><span class="b">Class of Failure:&nbsp;&nbsp;</span><input type="text" name="cof"  size="15" value="' . $row['cof'] . '" /></div>';
                echo '<div id="fdt"><span class="b">Failure Due To:&nbsp;&nbsp;</span><input type="text" name="fdt"  size="15" value="' . $row['fdt'] . '" /></div>';

            echo '</div>';

//Fabricators
        echo '<div id="box4">';
            echo '<h2>Fabricators</h2>';
if ($row['fab1']=="--None--")
{
    echo'<div id="fab1">';
    $mysqli = new mysqli(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME); 
    $mysqli->select_db('user');
    $result = $mysqli->query("SELECT * FROM user"); 
    echo "<SELECT name='fab1'>\n";
    while($row = $result->fetch_assoc())
    {
        echo "<option value='{$row['user']}'>{$row['user']}</option>\n";
    }
    echo "</select>\n";
    echo '</div>';
}
else
{
    echo'<div id="fab1">';
    $mysqli = new mysqli(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME); 
    $mysqli->select_db('user');
    $result = $mysqli->query("SELECT * FROM user"); 
    echo "<SELECT name='fab1'>\n";
    while($row = $result->fetch_assoc())
    {
        echo "<option value='{$row['user']}'>{$row['user']}</option>\n";
    }
    echo "</select>\n";
    echo '</div>';
}


if ($row['fab2']="--None--")
{
    echo'<div id="fab2">';
    $mysqli = new mysqli(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME); 
    $mysqli->select_db('user');
    $result = $mysqli->query("SELECT * FROM user"); 
    echo "<SELECT name='fab2'>\n";
    while($row = $result->fetch_assoc())
    {
        echo "<option value='{$row['user']}'>{$row['user']}</option>\n";
    }
    echo "</select>\n";
    echo '</div>';
}
else
{
    echo '<div id="fab2"><span class="b"></span><input type="text" name="fab1"  size="20" value="' . $row['fab1'] . '" /></div>';
    echo '</div>';
}
if ($row['fab3']="--None--")
{
    echo'<div id="fab3">';
    $mysqli = new mysqli(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME); 
    $mysqli->select_db('user');
    $result = $mysqli->query("SELECT * FROM user"); 
    echo "<SELECT name='fab3'>\n";
    while($row = $result->fetch_assoc())
    {
        echo "<option value='{$row['user']}'>{$row['user']}</option>\n";
    }
    echo "</select>\n";
    echo '</div>';
}
else
{
    echo '<div id="fab3"><span class="b"></span><input type="text" name="fab1"  size="20" value="' . $row['fab1'] . '" /></div>';
    echo '</div>';
}       echo '</div>';

//Nonconformity, Disposition, Comments and Comments & Additional Details
        echo '<div id="box5">';
            if (empty($row['non'])) $row['non'] = "Empty";
            if (empty($row['dis'])) $row['dis'] = "Empty";
            if (empty($row['comm'])) $row['comm'] = "Empty";
            if (empty($row['caad'])) $row['caad'] = "Empty";

            echo '<div id="non"><span class="b">Nonconformity:&nbsp;&nbsp;</span><textarea rows="4" cols="105">' . $row['non'] . '</textarea></div>';
            echo '<div id="dis"><span class="b">Disposition:&nbsp;&nbsp;</span><textarea rows="4" cols="105">' . $row['dis'] . '</textarea></div>';
            echo '<div id="comm"><span class="b">Comments:&nbsp;&nbsp;</span><textarea rows="4" cols="105">' . $row['comm'] . '</textarea></div>';
            echo '<div id="caad"><span class="b">Comments and/or Additional Details:&nbsp;&nbsp;</span><textarea rows="4" cols="105">' . $row['caad'] . '</textarea></div>';

                echo '<div id="podr">';
                        if (empty($row['po'])) $row['po'] ="Empty";
                        if (empty($row['pod'])) $row['pod'] ="Empty";
                        if (empty($row['dir'])) $row['dri'] ="Empty";

                    echo '<div id="po"><span class="b">PO:&nbsp;&nbsp;</span><input type="text" name="po"  size="7" value="' . $row['po'] . '" /></div>';
                    echo '<div id="pod"><span class="b">PO Date:&nbsp;&nbsp;</span><input type="text" name="pod"  size="7" value="' . $row['pod'] . '" /></div>';
                    echo '<div id="dri"><span class="b">Date Received:&nbsp;&nbsp;</span><input type="text" name="dri"  size="7" value="' . $row['dri'] . '" /></div>';
                echo '</div>';
            echo '<div id="button2"><input type="submit" value="Submit Edits" name="submit" /></div>';
//Save ID so it can be used with POST request.
echo "<input type='hidden' value='$id' name='id'/>"; 

        echo '</div>';
    echo '</fieldset>';
echo '</form>';
        }
    }

echo '</div>';

?>
</body>
</html>