Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/267.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP/MySQL更新查询根本不起作用_Php_Mysql - Fatal编程技术网

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

PHP/MySQL更新查询根本不起作用,php,mysql,Php,Mysql,我只是编程方面的初学者,所以我只是通过教程来引用我所有的代码。幸运的是,我在youtube上找到了这个在线教程,允许用户使用php在mysql中添加、更新和删除数据。我按照他的指示,我让它工作,但当我在上面添加css时,它停止了 这不是一般问题,我只是需要一些帮助。如果有人能帮助我,我将不胜感激。非常感谢你 Maintenance.php <?php $servername = "localhost"; $username = "root"; $password = ""; $databa

我只是编程方面的初学者,所以我只是通过教程来引用我所有的代码。幸运的是,我在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更新,也没有在我的输入字段中更新。任何帮助都可以!请

更新
我让它工作了。我的输入字段代码中有一个错误,其中我的$\u POST['hidden']的值与我的表上的名称的值不匹配。使用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'] . "'>"
“”
""
固定代码

"<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'] . "'>"
“”

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

if(isset($\u POST['update'])
中,在变量
$update
分配查询后,只需使用
echo$update
var\u dump($update)
将其回显出来,以您喜欢的为准。现在在浏览器上运行测试,查看打印的内容


一旦你的浏览器上有了这个字符串,如果一切正常,可以使用命令提示符/终端或类似于Workbench的应用程序查询数据库,看看会发生什么。如果你喜欢在这里发布这个字符串,那么我们可以检查它是否被正确创建。

将SQL查询作为字符串输出并运行它每年检查一次数据库,并检查它是否抛出错误。同时检查传递的参数是否是您想要的参数

if(isset($\u POST['update'])
中,在变量
$update
分配查询后,只需使用
echo$update
var\u dump($update)
将其回显出来,以您喜欢的为准。现在在浏览器上运行测试,查看打印的内容


一旦你的浏览器上有了这个字符串,如果一切正常,可以使用命令提示符/终端或类似于Workbench的应用程序查询数据库,看看会发生什么。如果你喜欢在这里发布这个字符串,那么我们可以检查它是否被正确创建。

你的代码有一个明显的问题:

$data = mysqli_query($connect, "SELECT * FROM `maintenance`");
当您发出
SELECT
查询时,数据库服务器开始工作,收集所有结果,并将它们放在整洁的小盒子中,供您稍后选择

mysqli\u query()
返回时,所有的工作都完成了,每个人都回家了,只有夜班警卫在等你去拿结果

mysqli_query($connect, "UPDATE `maintenance` ...");
另一个查询,工厂的另一天。这个查询不会以任何方式影响昨天的结果

while ($record = mysqli_fetch_array($data)) {
  ...
}
在这里,你可以看到昨天的结果


如果希望更新的结果显示在网页上,则需要在
选择之前运行
更新
,代码存在一个明显的问题:

$data = mysqli_query($connect, "SELECT * FROM `maintenance`");
当您发出
SELECT
查询时,数据库服务器开始工作,收集所有结果,并将它们放在整洁的小盒子中,供您稍后选择

mysqli\u query()
返回时,所有的工作都完成了,每个人都回家了,只有夜班警卫在等你去拿结果

mysqli_query($connect, "UPDATE `maintenance` ...");
另一个查询,工厂的另一天。这个查询不会以任何方式影响昨天的结果

while ($record = mysqli_fetch_array($data)) {
  ...
}
在这里,你可以看到昨天的结果


如果希望更新的结果显示在网页上,则需要在
SELECT
开始工作之前运行
UPDATE
。我的输入字段代码中有一个错误,其中我的$\u POST['hidden'的值与我的表上的名称值不匹配。使用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给了我这个想法。

我让它工作起来了。在我的输入字段代码中有一个错误,我的$\u POST['hidden']的值与我表上的名称的值不匹配。使用var\u dump it打印更新查询帮助我查看了我的代码,并找到了问题的确切原因

错误代码

"<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给了我这个想法。

首先,您的代码容易受到sql注入的攻击(mysqli支持预处理语句和转义)。如果这是教程中的实际代码,请获取一个新代码。其次,您没有检查update语句中的错误,如果更新不起作用,您可能应该这样做。请在数据库之前转义所有$\u POST数组update@Rangad我做了if和else语句。它总是显示成功,但没有什么是成功的working@DLastCodeBender我试过了他是mysqli_real_escape_string和mysqli_escape_string。我的更新仍然不起作用。请将SQL查询作为字符串输出,并在数据库上手动运行,检查是否抛出错误。还要检查传递的参数是否是您想要的参数。首先,您的代码容易受到SQL注入的攻击(mysqli支持准备语句和转义)。如果这是教程中的实际代码,请获取一个新代码。其次,您没有检查update语句中的错误,如果更新不起作用,您可能应该这样做。请在数据库之前转义所有$\u POST数组update@Rangad我做了if和else语句。它总是显示成功,但什么都没有