注意:未定义的变量:第19行的... uredi.php中的行调用堆栈#TimeMemoryFunctionLocation

时间:2013-10-22 19:33:13

标签: php mysql

我不知道我做错了什么......

我的代码是:

<?php 

    if ( isset($_GET['uredi'])) {
        $id = $_GET['uredi'];
        $sql = mysqli_query($link, "SELECT * FROM changelog");
        $row = mysqli_fetch_array($sql);
    }

 ?>
    <div class="container main">
        <div class="row">
            <div class="page-header">
              <h1>Changelog <small><a href="dodaj" title="dodaj"><div class="btn btn-danger btn-xs">Dodaj</div></a></small></h1>
            </div>
            <form role="form" action="includes/dodaj-changelog.php" method="post" accept-charset="utf-8">
                <textarea name="vsebina"><?php echo $row['vsebina']; ?></textarea>
                <input type="hidden" name="id" value="<?php echo $row['id']; ?>">
                <button type="submit" style="margin-top: 20px" class="btn btn-primary">Dodaj</button>
            </form> 
        </div>
    </div>

它总是给我错误:注意:未定义的变量:第19行的C:\ wamp \ www \ ocene \ uredi.php中的行调用堆栈#TimeMemoryFunctionLocation 10.0000142728 {main}().. \ uredi.php:0 “&GT;

但是定义了$ row ......

3 个答案:

答案 0 :(得分:1)

注意,您只在if块中定义$row,只有在您访问“uredi.php?uredi=SOMETHING”或以其他方式将uredi作为GET参数传递时才会执行。{ / p>

为什么需要if块,uredi参数代表什么?

答案 1 :(得分:1)

您的问题是,如果$ _GET ['uredi'] isset ,您只定义$row - 在这种情况下,请将第19行更改为:

<input type="hidden" name="id" value="<?php echo (isset($row['id'])) ? $row['id'] : ''; ?>">

...和其他变量一样。如果您想要字段的默认值,请将它们放在该代码的''部分。

答案 2 :(得分:0)

如果你改变了怎么办:     <form ... action="includes/dodaj-changelog.php" ... >

要     <form ... action="includes/dodaj-changelog.php?uredi=<?php echo $row['id'];?>" ... >,其余的保持不变。

当您提交表单时,不知怎的,它会忘记&#34;它正在处理的sql表中的哪一行,以及使用$_GET['uredi'];这样的方式获得的数据我确保再次获得uredi(表中的id - 唯一值,用于标识您需要的特定行并在执行SELECT时保留它。

试一试。它对我来说是一个UPDATE查询场景。