从HTML表单用PHP编辑SQL表

从HTML表单用PHP编辑SQL表,php,sql,html-table,Php,Sql,Html Table,在这个项目上工作了一天,现在我的大脑无法帮助我完成。我希望任何人都能帮助我!我还在学习,所以你会发现错误。我正在为我的队友建立一个数据库。我刚刚创建了一个链接到SQL数据库的大表单。它起作用了。还有一个页面,他们可以在其中查看html表中的所有数据。现在我正在编辑类似表单中的表值 这是php表单 <?php $link = mysqli_connect("localhost", "", "", ""); if($link === false) { die("ERROR: " .

在这个项目上工作了一天,现在我的大脑无法帮助我完成。我希望任何人都能帮助我!我还在学习,所以你会发现错误。我正在为我的队友建立一个数据库。我刚刚创建了一个链接到SQL数据库的大表单。它起作用了。还有一个页面,他们可以在其中查看html表中的所有数据。现在我正在编辑类似表单中的表值

这是php表单

<?php
$link = mysqli_connect("localhost", "", "", "");

if($link === false) {
    die("ERROR: " . mysqli_connect_error());
}

$n_ordine = mysqli_real_escape_string($link, $_REQUEST['n_ordine']);
$cliente = mysqli_real_escape_string($link, $_REQUEST['cliente']);
$data = mysqli_real_escape_string($link, $_REQUEST['data']);
$paese = mysqli_real_escape_string($link, $_REQUEST['paese']);
$operatore = mysqli_real_escape_string($link, $_REQUEST['operatore']);
$n_spedizione = mysqli_real_escape_string($link, $_REQUEST['n_spedizione']);
$fornitore = mysqli_real_escape_string($link, $_REQUEST['fornitore']);
$ord_forn = mysqli_real_escape_string($link, $_REQUEST['ord_forn']);
$n_fornitore = mysqli_real_escape_string($link, $_REQUEST['n_fornitore']);
$corriere = mysqli_real_escape_string($link, $_REQUEST['corriere']);
$n_corriere = mysqli_real_escape_string($link, $_REQUEST['n_corriere']);
$riserva = mysqli_real_escape_string($link, $_REQUEST['riserva']);
$marrara = mysqli_real_escape_string($link, $_REQUEST['marrara']);
$note = mysqli_real_escape_string($link, $_REQUEST['note']);
$esito = mysqli_real_escape_string($link, $_REQUEST['esito']);
$rientro = mysqli_real_escape_string($link, $_REQUEST['rientro']);
$spese_forn = mysqli_real_escape_string($link, $_REQUEST['spese_forn']);
$spese_corr = mysqli_real_escape_string($link, $_REQUEST['spese_corr']);
$sostituzione = mysqli_real_escape_string($link, $_REQUEST['sostituzione']);
$n_fatt_orig = mysqli_real_escape_string($link, $_REQUEST['n_fatt_orig']);
$n_storno = mysqli_real_escape_string($link, $_REQUEST['n_storno']);

$sql = "INSERT INTO databasename (n_ordine, cliente, data, paese, operatore, n_spedizione, fornitore, ord_forn, n_fornitore, corriere, n_corriere, riserva, marrara, note, esito, rientro, spese_forn, spese_corr, sostituzione, n_fatt_orig, n_storno) VALUES ('$n_ordine', '$cliente', '$data', '$paese', '$operatore', '$n_spedizione', '$fornitore', '$ord_forn', '$n_fornitore', '$corriere', '$n_corriere', '$riserva', '$marrara', '$note', '$esito', '$rientro', '$spese_forn', '$spese_corr', '$sostituzione', '$n_fatt_orig', '$n_storno')";
if(mysqli_query($link, $sql)){
    echo "OK";
} else{
    echo "ERROR: $sql. " . mysqli_error($link);
}

mysqli_close($link);
?>
而且,当我全部更新时,它会给出“更新正确完成”,而不是一个错误,但如果我检查SQL表,则不会发生任何更改。在“WHERE”条件下可能是非常简单的,但我看不出来。我还尝试以这种方式更改代码sql=“UPDATE gestionale SET n_ordine=”、“$POST['n_ordine']”等等,但都是一样的

我希望任何人都能看到我的错误


非常感谢

请像这样更改更新命令,进行错误验证,以便获得可能的错误进行更正:

$sql = $link->query("UPDATE gestionale SET n_ordine = ' ".$n_ordine." ', cliente = ' ".$cliente." ', data = ' ".$data." ', paese = ' ".$paese." ', operatore = ' ".$operatore." ', n_spedizione = ' ".$n_spedizione." ', fornitore = ' ".$fornitore." ', ord_forn = ' ".$ord_forn." ', n_fornitore = ' ".$n_fornitore." ', corriere = ' ".$corriere." ', n_corriere = ' ".$n_corriere." ', riserva = ' ".$riserva." ', marrara = ' ".$marrara." ', note = ' ".$note." ', esito = ' ".$esito." ', rientro = ' ".$rientro." ', spese_forn = ' ".$spese_forn." ', spese_corr = ' ".$spese_corr." ', sostituzione = ' ".$sostituzione." ', n_fatt_orig = ' ".$n_fatt_orig." ', n_storno = ' ".$n_storno." ' WHERE n_ordine = '".$_POST['n_ordine']."'") or die(mysqli_error($link));

if($sql){

    echo "Update Done Correctly";

} else{

    echo "ERROR : Not updated";
}
1) 在将该值传递给SQL查询之前,应该清除该值

$num = $_GET['n_ordine']; 
$query = "SELECT * FROM databasename WHERE n_ordine = '$num'"; 
2) 从数组传递字符串键时应使用引号:

$row[n_ordine] -> $row['n_ordine']
3) 您可以尝试使用PDO并将参数绑定到查询中,因为现在这样做是不安全的。 应该行得通


4) 如果您不想使用PDO,只需
var\u dump($sql)
在您的上一个文件中粘贴整个查询-我们将能够检查错误所在。您还可以粘贴
从gestionale选择*的结果
-这将很有帮助

您的更新命令似乎不正确。请更改为。我的意思是,您有$row=array,所以要访问某个键,您应该调用$row['key']-键作为字符串值。在一切顺利完成后,请删除die命令。这仅用于调试目的,不会向所有人显示您遇到的错误。您好!首先,感谢您的帮助。如果我添加$link->query,我将在中获得“Parse error:syntax error unexpected”更新gestionale SET N_ordin(T_CONSTANT_ENCAPSED_string)(第86行,即$sql行)然后像使用n_ordine='$n_ordine'一样使用它,删除带有点运算符的双引号,现在您可以找到您得到的错误,这样就很容易验证。如果我使用sql=“UpdateGSTIONALE SET n_ordine='$n_ordine',其中n_ordine='$n_ordine'”;它会告诉我一切正常,但没有更新,也没有错误):您好,谢谢!我必须在edit.php文件中清除它?我知道现在不安全,我会尽快检查您的建议!现在我正在尝试解决此问题):谢谢!
$sql = $link->query("UPDATE gestionale SET n_ordine = ' ".$n_ordine." ', cliente = ' ".$cliente." ', data = ' ".$data." ', paese = ' ".$paese." ', operatore = ' ".$operatore." ', n_spedizione = ' ".$n_spedizione." ', fornitore = ' ".$fornitore." ', ord_forn = ' ".$ord_forn." ', n_fornitore = ' ".$n_fornitore." ', corriere = ' ".$corriere." ', n_corriere = ' ".$n_corriere." ', riserva = ' ".$riserva." ', marrara = ' ".$marrara." ', note = ' ".$note." ', esito = ' ".$esito." ', rientro = ' ".$rientro." ', spese_forn = ' ".$spese_forn." ', spese_corr = ' ".$spese_corr." ', sostituzione = ' ".$sostituzione." ', n_fatt_orig = ' ".$n_fatt_orig." ', n_storno = ' ".$n_storno." ' WHERE n_ordine = '".$_POST['n_ordine']."'") or die(mysqli_error($link));

if($sql){

    echo "Update Done Correctly";

} else{

    echo "ERROR : Not updated";
}
$num = $_GET['n_ordine']; 
$query = "SELECT * FROM databasename WHERE n_ordine = '$num'"; 
$row[n_ordine] -> $row['n_ordine']