Php 我做错了什么?

Php 我做错了什么?,php,Php,我已经盯着这页看了一个多小时了。我的更新功能似乎没有更新。当我通过sql尝试时,它似乎还可以。我在这个页面的底部有一个表单,它更新了表中的一个字段。有人能发现错误吗 <?php // First of all initialise the user and check for permissions require_once "/var/www/users/user.php"; $user = new CHUser(2); // Initialise the template

我已经盯着这页看了一个多小时了。我的更新功能似乎没有更新。当我通过sql尝试时,它似乎还可以。我在这个页面的底部有一个表单,它更新了表中的一个字段。有人能发现错误吗

   <?php

// First of all initialise the user and check for permissions
require_once "/var/www/users/user.php";
$user = new CHUser(2);


// Initialise the template
require_once "/var/www/template/template.php";
$template = new CHTemplate();

// And create a cid object
    require_once "/var/www/Testing/DisplayWIPOnLocation.php";
$BundleProgress= new CHWIPProgress();


 if(isset($_GET['Reference'])){

 $todays_date = date("Y-m-d H:i:s");
 $content .= " <h3> Details for Bundle : $reference </h3> ";
 $bundle = $BundleProgress->GetBundle($_GET['Reference']);   
 $reference = $_GET['Reference'];

 // Now show the details

    foreach($bundle as $x){
        $content .= "
       <table>
                                     <tr>
                    <th> Location </th> 
                    <td>" . $x['Description'] . "</td> 
                    </tr>



                    <tr>
                    <th> Works Order Number </th> 
                    <td>" . $x['WorksOrder'] . "</td> 
                    </tr>


                    <tr>
                    <th> Bundle Number </th> 
                            <td>" . $x['Number'] . "</td>
                    </tr>


                     <tr>
                    <th>Qty Issued</th>
                    <td>" . $x['Qty'] . "</td>

                    </tr>


                    <tr>
                    <th>Bundle Reference </th> 
                    <td>" . $x['Reference'] . "</td>

                    </tr>

                    <tr>
                    <th>Style description</th> 
                                            <td>" . $x['Stock'] . "</td>

                    </tr>

                    <tr>
                            <th>Due Date</th>
                    <td>" . $x['DueDate'] . "</td>

                    </tr>


                    <tr>
                    <th>Date In </th>
                    <td>" . $x['DateIN'] . "</td>

                    </tr>

                    <tr>
                    <th>Date Out</th>
                    <td>" . $x['DateOUT'] . "</td>

                    </tr>

                    <tr>
                    <th>Last Code</th>
                    <td>" . $x['Last'] . "</td>

                    </tr>

                </table>

                <br> "; 

    }

                 $content .= " </table>
                <form action='viewBundle.php?step=2' method='post'>
                <p>Reason: <input type='text' name='reason' /><br       
                                    /><p>
                <p><input type='hidden' name='bundlereference'   
                                     id='Username' value='" . $x['Reference'] . "' />
                <input type='submit' name ='add'/></form>

                </table>  ";   

                if($_GET['step'] == 2) {



        $BundleProgress->UpdateReason($_POST['reason'],$_POST['bundlereference']);

                 $content .= " <a href='index.php?location=" .   
              $x['Description'] . "'> updated</a> "; 
                }

       }


     else {
    $content .= "<h3>Something has gone wrong</h3>

    <br>

    <a href='index.php?location=" . $x['Description'] . "'> Return to Previous            
  Page </a> 

    ";
}

  $template->SetTag("content", $content);
  echo $template->Display();

  ?>

我建议您先检查mysql\u查询返回的内容,然后将其分解。这可能是因为该特定变量的定义不正确。还请记住在查询中的值中添加引号。

更改:

if($_GET['step'] == 2)
致:

以及:

致:

试试看。代码还没有经过测试,但这是一个很好的起点

要尝试并调试此处发生的情况,请执行以下操作:

public function UpdateReason($reason, $bundlereference) {
    error_reporting(E_ALL ^ E_NOTICE);

    $db_selected = mysql_select_db(DB_DATABASE_NAME, $this->conn);

    if (!$db_selected) {
        die("Can't use db : " . mysql_error());
    }

    $_reason = mysql_real_escape_string($reason,$this->conn);
    $_bundlereference = mysql_real_escape_string($bundlereference,$this->conn);

    $sql = "UPDATE `ArchiveBundle`
            SET `Issue` = '" . $_reason . "'
            WHERE `BundleReference` = '" . $_bundlereference . "'";

    mysql_query($sql, $this->conn);

    die(mysql_error());
}
此外,在提交表单时,似乎没有传递Reference参数,因此在发布表单时if(isset($\u GET['Reference'])将失败。我已经更改了下面的表和表单代码,以使其更具可读性,在表单提交时传入引用参数,并在获取数据集之前更新db记录,以便在返回的表中看到更新的记录

// First of all initialise the user and check for permissions
require_once "/var/www/users/user.php";
$user = new CHUser(2);


// Initialise the template
require_once "/var/www/template/template.php";
$template = new CHTemplate();

// And create a cid object
require_once "/var/www/Testing/DisplayWIPOnLocation.php";
$BundleProgress= new CHWIPProgress();


if(isset($_GET['Reference'])){
    if($_GET['step'] == 2) {
        $BundleProgress->UpdateReason($_POST['reason'],$_POST['bundlereference']);
    }

    $todays_date = date("Y-m-d H:i:s");
    $content .= " <h3> Details for Bundle : $reference </h3> ";
    $bundle = $BundleProgress->GetBundle($_GET['Reference']);   
    $reference = $_GET['Reference'];

    // Now show the details
    foreach($bundle as $x){
        $content .= "
                    <table>
                        <tr><th> Location </th><td>" . $x['Description'] . "</td></tr>
                        <tr><th> Works Order Number </th><td>" . $x['WorksOrder'] . "</td></tr>
                        <tr><th> Bundle Number </th><td>" . $x['Number'] . "</td></tr>
                        <tr><th>Qty Issued</th><td>" . $x['Qty'] . "</td></tr>
                        <tr><th>Bundle Reference </th><td>" . $x['Reference'] . "</td></tr>
                        <tr><th>Style description</th><td>" . $x['Stock'] . "</td></tr>
                        <tr><th>Due Date</th><td>" . $x['DueDate'] . "</td></tr>
                        <tr><th>Date In </th><td>" . $x['DateIN'] . "</td></tr>
                        <tr><th>Date Out</th><td>" . $x['DateOUT'] . "</td></tr>
                        <tr><th>Last Code</th><td>" . $x['Last'] . "</td></tr>
                    </table>
                    <br>";
    }

    $content .= "<table>
                    <form action='viewBundle.php?Reference=" . $_GET['Reference'] . "&step=2' method='post'>
                        <p>Reason: <input type='text' name='reason' /></p><br/>
                        <p><input type='hidden' name='bundlereference' id='Username' value='" . $x['Reference'] . "' /></p>
                        <input type='submit' name ='add'/>
                    </form>
                </table>";   
} else {
    $content .= "<h3>Something has gone wrong</h3>
                <br>
                <a href='index.php?location=" . $x['Description'] . "'> Return to Previous Page </a> 
                ";
}

$template->SetTag("content", $content);
echo $template->Display();
//首先初始化用户并检查权限
需要_once“/var/www/users/user.php”;
$user=新CHUser(2);
//初始化模板
需要_once“/var/www/template/template.php”;
$template=新的CHTemplate();
//并创建一个cid对象
需要_once“/var/www/Testing/DisplayWIPOnLocation.php”;
$BundleProgress=new CHWIPProgress();
如果(isset($_GET['Reference'])){
如果($_GET['step']==2){
$BundleProgress->UpdateReason($\u POST['reason'],$\u POST['bundlereference']);
}
$todays_date=日期(“Y-m-d H:i:s”);
$content.=“捆绑包的详细信息:$reference”;
$bundle=$BundleProgress->GetBundle($\u GET['Reference']);
$reference=$_GET['reference'];
//现在显示详细信息
foreach($x捆绑){
$content.=”
位置“$x['Description']”
工程订单编号“$x['WorksOrder']”
捆绑编号“$x['Number']”
已发行数量“$x[‘数量’]”
捆绑包引用“$x['Reference']”
样式说明“$x['Stock']”
到期日“$x['DueDate']”
日期在“$x['DateIN']”中
注明日期“$x['DateOUT']”
最后代码“$x['Last']”

“; } $content.=” 原因:


"; }否则{ $content.=“出了问题
"; } $template->SetTag(“内容”,$content); echo$template->Display();
“我做错了什么?”“没有清理用户输入和信任客户机”,并且没有检查数据库函数的返回调用,所以即使您也不知道出了什么问题……将
放在
之间。
!!第一个不重要,因为PHP是弱类型的。我尝试添加您的更改,但似乎仍然不起作用。如果我回显sql并手动输入数据,它就会工作。真奇怪。我是php的初学者。感谢您的帮助OK,去掉返回,然后在mysql\u查询下面添加以下内容:echo mysql\u errno($this->conn)。": " . mysql\u错误($this->conn)。“\n”;我现在唯一能想象的是错误的是DB_DATABASE_NAME不是未设置就是错误,我上面给你的代码行会让你知道。我已经更新了我的答案,包括调试任何错误所需的代码。
public function UpdateReason($reason, $bundlereference) {
    $sql = "UPDATE `ArchiveBundle`
        SET `Issue` = " . $reason . "
        WHERE `BundleReference` = " . $bundlereference .    
        ";";
    mysql_select_db(DB_DATABASE_NAME, $this->conn);
    return mysql_query($sql, $this->conn);
}
public function UpdateReason($reason, $bundlereference) {
    mysql_select_db(DB_DATABASE_NAME, $this->conn);

    $_reason = mysql_real_escape_string($reason,$this->conn);
    $_bundlereference = mysql_real_escape_string($bundlereference,$this->conn);

    $sql = "UPDATE `ArchiveBundle`
            SET `Issue` = '" . $_reason . "'
            WHERE `BundleReference` = '" . $_bundlereference . "'";

    return mysql_query($sql, $this->conn);
}
public function UpdateReason($reason, $bundlereference) {
    error_reporting(E_ALL ^ E_NOTICE);

    $db_selected = mysql_select_db(DB_DATABASE_NAME, $this->conn);

    if (!$db_selected) {
        die("Can't use db : " . mysql_error());
    }

    $_reason = mysql_real_escape_string($reason,$this->conn);
    $_bundlereference = mysql_real_escape_string($bundlereference,$this->conn);

    $sql = "UPDATE `ArchiveBundle`
            SET `Issue` = '" . $_reason . "'
            WHERE `BundleReference` = '" . $_bundlereference . "'";

    mysql_query($sql, $this->conn);

    die(mysql_error());
}
// First of all initialise the user and check for permissions
require_once "/var/www/users/user.php";
$user = new CHUser(2);


// Initialise the template
require_once "/var/www/template/template.php";
$template = new CHTemplate();

// And create a cid object
require_once "/var/www/Testing/DisplayWIPOnLocation.php";
$BundleProgress= new CHWIPProgress();


if(isset($_GET['Reference'])){
    if($_GET['step'] == 2) {
        $BundleProgress->UpdateReason($_POST['reason'],$_POST['bundlereference']);
    }

    $todays_date = date("Y-m-d H:i:s");
    $content .= " <h3> Details for Bundle : $reference </h3> ";
    $bundle = $BundleProgress->GetBundle($_GET['Reference']);   
    $reference = $_GET['Reference'];

    // Now show the details
    foreach($bundle as $x){
        $content .= "
                    <table>
                        <tr><th> Location </th><td>" . $x['Description'] . "</td></tr>
                        <tr><th> Works Order Number </th><td>" . $x['WorksOrder'] . "</td></tr>
                        <tr><th> Bundle Number </th><td>" . $x['Number'] . "</td></tr>
                        <tr><th>Qty Issued</th><td>" . $x['Qty'] . "</td></tr>
                        <tr><th>Bundle Reference </th><td>" . $x['Reference'] . "</td></tr>
                        <tr><th>Style description</th><td>" . $x['Stock'] . "</td></tr>
                        <tr><th>Due Date</th><td>" . $x['DueDate'] . "</td></tr>
                        <tr><th>Date In </th><td>" . $x['DateIN'] . "</td></tr>
                        <tr><th>Date Out</th><td>" . $x['DateOUT'] . "</td></tr>
                        <tr><th>Last Code</th><td>" . $x['Last'] . "</td></tr>
                    </table>
                    <br>";
    }

    $content .= "<table>
                    <form action='viewBundle.php?Reference=" . $_GET['Reference'] . "&step=2' method='post'>
                        <p>Reason: <input type='text' name='reason' /></p><br/>
                        <p><input type='hidden' name='bundlereference' id='Username' value='" . $x['Reference'] . "' /></p>
                        <input type='submit' name ='add'/>
                    </form>
                </table>";   
} else {
    $content .= "<h3>Something has gone wrong</h3>
                <br>
                <a href='index.php?location=" . $x['Description'] . "'> Return to Previous Page </a> 
                ";
}

$template->SetTag("content", $content);
echo $template->Display();