PHP值没有UPDATE mysql表

时间:2016-12-15 16:13:39

标签: php mysql html5

在我的第一个php文件中,我从mysql中获取结果并在表中显示它们。一列中的每个行值必须为“是”或“否”。添加值为“否”的新请求时。在“否”点击我想打开另一个php(zatvaranje_zadatka.php)并将id_zadatka和broj_zadatka发送到新的php文件,并输入表格来输入请求的解决方案。在提交新的php文件时,我想将mysql table1中的标志更改为“是”,并将解决方案写入mysql中的另一个表。 在第一个php的简短说明中:

while ($row = mysql_fetch_array($result)) 
{
    echo '<tr><td>' .$row["id_zadatka"] .'</td>';
    echo '<td><a href="zatvaranje_zadatka.php?id_zadatka='.$row["id_zadatka"].'">Zatvori</a></td>';
}

在zatvaranje_zadatka.php中我有:

$id_zadatak = isset($_GET['id_zadatka']) ? $_GET['id_zadatka'] : '';
$br_zht = isset($_GET['broj_zadatka']) ? $_GET['broj_zadatka'] : '';
if($id_zadatak != '') {
    echo '<form action="zatvaranje_zadatka.php?go.php" method="POST" id="zatv_zad" name="zatv_zad">';
    echo '<fieldset>';
    echo ' Broj zadatka je:';
    echo '<legend>Rješenje zadatka</legend>';
    echo ' <textarea id= "rjesenje" name = "rjesenje" rows="4" cols="50"></textarea>';
    echo '</fieldset>';
    echo '<button type="submit" id="submit_zatv" name="submit_zatv"> Zatvori zadatak </button>';
    echo '</form>';

    $rjesenje = isset($_GET['rjesenje']) ? $_GET['rjesenje'] : '';

    $query2 = "INSERT INTO rjesenje(broj_zadatka, rjesenje_zadatka) VALUES ('$br_zht', '$rjesenje')";
    $result2 = mysql_query($query2) or die ("Nije uspio zapis u bazu" .mysql_error());
}

输出到表rjesenje没什么。

3 个答案:

答案 0 :(得分:0)

这可能是由于一个错字。您需要在表名和行名之间留一个空格。 (例如rjesenje_(broj_zadatka,rjesenje_zadatka))

但更糟糕的是,您的数据库容易受到SQL注入攻击。请查看 prepared statements

答案 1 :(得分:0)

您的表单为method="POST",您检查$_GET个变量。因此错误rjesenje为空。这应该会导致错误,但是您检查了$_GET['rjesenje']是否已设置。它不是,因此变量的值是什么,当你检查它是否已设置时指定。

$rjesenje = isset($_GET['rjesenje']) ? $_GET['rjesenje'] : '';
  

返回false =&gt; $ rjesenje =没什么

将该行更改为以下内容:

$rjesenje = isset($_POST['rjesenje']) ? $_POST['rjesenje'] : '';

要解决此问题,请将表单的请求方法更改为method="get"或检查$_POST变量,如上所述。

检查这是否属实的一种方法是,您可以尝试在调试时打印出变量:

print_r($_GET);

print_r($_POST);

确保在调试时出现错误

error_reporting(E_ALL);

了解详情:How to get useful error messages in PHP?

另外,我建议您使用mysqli或pdo函数而不是mysql。由于mysql函数从PHP版本5.5开始被弃用,并且在php 7.0中被完全删除,并且因为mysql函数容易受到攻击。

http://php.net/manual/en/intro.mysql.php

答案 2 :(得分:0)

这个代码看起来一团糟,有问题,但你可以试试这个以进行测试,以便弄清楚这一切在最后是如何工作的。

    $id_zadatak = $_GET['id_zadatka']; // we set this via URL
    //$br_zht = $_GET['id_zadatka']; // id i broj su ista stvar
    $rjesenje = $_POST['rjesenje'];


    if($id_zadatak != '') {

            echo '<form action="zatvaranje_zadatka.php?id_zadatka='.$id_zadatak.'" method="POST" id="zatv_zad" name="zatv_zad">';
                echo '<fieldset>';
                   echo ' Broj zadatka je:';
                    echo '<legend>Rješenje zadatka</legend>';
                   echo ' <textarea id= "rjesenje" name = "rjesenje" rows="4" cols="50"></textarea>';
                echo '</fieldset>';
                echo '<button type="submit" id="submit_zatv" name="submit_zatv"> Zatvori zadatak </button>';
            echo '</form>';




        if(isset($rjesenje))
{
                $query2 = "INSERT INTO rjesenje(broj_zadatka, rjesenje_zadatka) VALUES ('$id_zadatak', '$rjesenje')";
                $result2 = mysql_query($query2) or die ("Nije uspio zapis u bazu" .mysql_error());
}

        }