PHP / MySQL更新查询根本不起作用

时间:2014-12-04 22:28:58

标签: php mysql

我在编程方面只是一个初学者,所以我只是通过教程来引用我的所有代码。幸运的是,我在youtube中找到了这个在线教程,允许用户使用php在mysql中添加,更新和删除数据。我遵循他的所有指示,我开始工作但是当我在上面添加css时它停止了。

这不是一般性问题,我只需要一些帮助。如果有人可以帮助我,非常感谢。非常感谢你。

Maintenance.php

<?php
$servername = "localhost";
$username = "root";
$password = "";
$database = "rssfeed";

$connect = mysqli_connect($servername, $username, $password, $database);
if (!$connect) {
    die("Cannot connect: " . mysqli_connect_error());
}

mysqli_select_db($connect, $database);

$sql = "SELECT * FROM `maintenance`";
$data = mysqli_query($connect, $sql);

if (isset($_POST['update'])) {
    $update = "UPDATE `maintenance` SET `name`='".$_POST['name']."', `url`='".$_POST['url']."', `description`='".$_POST['desc']."' WHERE `name`='".$_POST['hidden']."'";
    mysqli_query($connect, $update);
}

echo""
. "<table>"
. "<tr>"
. "<th>Name</th>"
. "<th>URL</th>"
. "<th>Description</th>"
. "<th colspan=2>Action</th>"
. "</tr>";

while ($record = mysqli_fetch_array($data)) {
    echo""
    . "<form action=maintenance.php method=POST>"
    . "<tr>"
    . "<td><input class=textbox  type=text name=name value='" . $record['name'] . "'> </td>"
    . "<td><input class=textbox size=50 type=url name=url value='" . $record['url'] . "'> </td>"
    . "<td><textarea class=textbox rows=3 cols=50 wrap=physical name=desc>" . $record['description'] . "</textarea></td>"
    . "<input type=hidden name=hidden value=" . $record['name'] . ">"
    . "<td><input type=submit name=update value=update></td>"
    . "<td><input type=submit name=delete value=delete></td>"
    . "</tr>"
    . "</form>";
}
echo""
. "</table>";

mysqli_close($connect);
?> 

我试过if和else声明我的代码是否有问题。从技术上讲,它说成功,但它没有。它没有通过mysql更新,也没有在我的输入字段中更新。任何帮助都会做!请

更新

我得到了它的工作。我的输入字段代码出错,我的$ _POST [&#39;隐藏&#39;]的值与我桌子上的名字值不匹配。使用var_dump打印更新查询它帮助我查看我的代码并得到了究竟是什么问题。

错误代码

"<input class=textbox type=text name=name value='" . $record['name'] . "'>"
"<input type=hidden name=hidden value=" . $record['name'] . ">"

固定代码

"<input type=hidden name=hidden value='" . $record['name'] . "'>"

3 个答案:

答案 0 :(得分:4)

将SQL查询输出为字符串并在数据库上手动运行,并检查是否抛出错误。还要检查传递的参数是否是你想要的参数。

在为变量if (isset($_POST['update'])分配了查询后的$update中,只需使用echo $updatevar_dump($update),即可。现在在浏览器上运行测试并查看打印内容。

一旦你的浏览器上有这个字符串,并且一切看起来都很好,可以使用命令提示符/终端或Workbench之类的应用程序查询数据库,看看会发生什么。如果您愿意在此处发布该字符串,那么我们可以检查它是否已正确创建。

答案 1 :(得分:1)

您的代码存在一个明显的问题:

$data = mysqli_query($connect, "SELECT * FROM `maintenance`");

当您发出SELECT查询时,数据库服务器开始工作,收集所有结果,并将它们放在整齐的小方框中,供您以后使用。

mysqli_query()返回时,所有工作都已完成,每个人都已经回家了,只有守夜人等着你去取结果。

mysqli_query($connect, "UPDATE `maintenance` ...");

另一个问题,另一天在工厂。此查询不会以任何方式影响昨天的结果。

while ($record = mysqli_fetch_array($data)) {
  ...
}

在这里,你正在接受昨天的结果。

如果您希望更新的结果显示在网页上,则需要在UPDATE之前运行SELECT

答案 2 :(得分:1)

我得到了它的工作。我的输入字段代码出错,我的$ _POST [&#39;隐藏&#39;]的值与我桌子上的名字值不匹配。使用var_dump打印更新查询它帮助我查看我的代码并得到了究竟是什么问题。

错误代码

"<input class=textbox type=text name=name value='" . $record['name'] . "'>"
"<input type=hidden name=hidden value=" . $record['name'] . ">"

固定代码

"<input type=hidden name=hidden value='" . $record['name'] . "'>"

感谢Dinesh给了我这个主意。