PHP mySqli没有更新表

时间:2015-01-28 22:16:15

标签: php mysqli

我正在尝试更新表格,但没有任何改变。数据库名称和字段是正确的。

<?php
require("config.php");
    $forname  = $_POST['name'];
    $newval = "yes";
    mysqli_query($con, "UPDATE pupils SET signin = '$newval' WHERE forname = '$forname'");
    mysqli_close($con); 
?>

帮助表示感谢! 谢谢,

更新

出现由于某种原因数据未正确发布的情况。

<form class="form-inline" name="markin" role="form" method="POST" action="markin.php">
    <div class="form-group">
    <select class="form-control" name"name" id="name">
    <?php
    $query = "SELECT * FROM `pupils` WHERE signin = 'no'";//Grab the data
    $result = mysqli_query($con, $query);
    while ($row = mysqli_fetch_array($result)) {//Creates a loop to loop through results
    echo "<option>" . $row['forname'] . "</option>";//$row['index'] the index here is a field name
    }
    ?>
    </select>
    </div>
    <button type="submit" class="btn btn-success">Mark in</button>
    </form>

1 个答案:

答案 0 :(得分:0)

使用 mysqli 扩展名是一种可怕的方法。

首先,我建议你阅读prepared statements quickstart guide,这会引导你这样......

$stmt = $con->prepare('UPDATE pupils SET signin = ? WHERE forname = ?');
$stmt->bind_param('ss', $newval, $forname);
$stmt->execute();

作为一个额外的好处,你应该设置 mysqli 以便在出错时抛出异常,这样你就不必一直检查返回值。在config.php文件中,在创建连接之前,请执行此操作...

mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
$con = new mysqli(...); // or however you create $con

并且如评论中所述,开发环境中的php.ini文件应使用以下指令启用完整错误报告

error_reporting = E_ALL
display_errors = On

要直接回答您的问题,您错过了<select>元素name属性的等号。它应该是

<select class="form-control" name="name" id="name">