0

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

我的代码是:

<?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 ">

但是 $row 被定义...

4

3 回答 3

1

注意,您只是$row在 if 块内部定义,只有在您访问 ' uredi.php?uredi=SOMETHING' 或以其他方式将 uredi 作为 GET 参数传递时才会执行。

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

于 2013-10-22T19:41:34.403 回答
1

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

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

...对于您的其他变量也是如此。如果您想要字段的默认值,请将它们放在''该代码的部分中。

于 2013-10-22T19:43:19.270 回答
0

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

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

当您提交表单时,它以某种方式“忘记”它正在处理的 sql 表中的哪一行,您使用$_GET['uredi'];这种方式获得的数据我保证再次获得 uredi(id - 表中标识您需要的特定行)并在执行 SELECT 时保留它。

试试看。它适用于 UPDATE 查询场景。

于 2016-07-22T18:47:36.140 回答