-1

I'm trying to update some records in my database via php. This is the part of my code that returns error:

<?php
    //turn on error reporting
    ini_set('display_errors',1);
    error_reporting(E_ALL);

    // Check if button name "Submit" is active, do this
    if(isset($_POST['Submit']))
    {
        $count=mysql_num_rows($result);
        for($i=0;$i<$count;$i++)
        {

     if(isset($title[$i],$descr[$i],$price[$i],$cname[$i],$pid[$i]))
            {
                $query = "
                   UPDATE products
                   SET title='$title[$i]',
                       descr='$descr[$i]',
                       price='$price[$i]',
                       cname='$cname[$i]'
                   WHERE pid='$pid[$i]'
               ";

                $upd = mysql_query($query) or die(mysql_error());
            }
            else
            {
                $upd = FALSE;
                echo "One of the variables isn't set.\n<br/>";
            }
        }

        if($upd)
        {
            echo "Successful";
            echo "<BR>";
            //display_manager_menu();
        }
        else {
            echo "Something wrong";
        }    
    }
    mysql_close();
    ?>

It returns: "Notice: Undefined variable: upd ". Since I set $upd as mysql_query result, I have no idea why I get this message. Any ideas?

4

4 回答 4

0

改变:

if($upd){

至:

if(isset($upd) && $upd){

如果$_POST['submit']未设置,则也不会设置变量$upd

于 2013-09-29T09:40:51.603 回答
0

问题是,这$udp是在 if 条件中声明的。当$_POST['Submit']未设置时,$udp也不会设置。您可以通过在 之前初始化变量来解决此问题if(...)

$udp = false; // initialize $udp before conditional
if(isset($_POST['Submit'])){
    for($i=0;$i<$count;$i++){
        $query="UPDATE products SET title='$title[$i]', descr='$descr[$i]', price='$price[$i]', cname='$cname[$i]' WHERE pid='$pid[$i]'";
        $upd=mysql_query($query);
    }
}

$udp在这种情况下,您使用, 进行初始化false,因为mysql_query()也会false在失败时返回。

于 2013-09-29T09:53:17.847 回答
-1

您是否正确关闭了 php 文件 ?> ?我已经通过简单地正确关闭文件来解决此类问题。

于 2013-09-29T10:06:26.133 回答
-1

除了$upd仅在条件中声明的答案之外,您正在编写代码,就像register_globals打开一样。你不应该这样做。

替换$title$_POST['title'], $descrwith$_POST['descr']等等。如果您正确连接,这将更容易完成:

"blah blah blah '".mysql_real_escape_string($_POST['title'][$i])." blah blah blah...";

此外,清理输入。

于 2013-09-29T10:10:05.327 回答