你如何用PHP从用户更新mysql中的一行

时间:2016-03-08 13:02:31

标签: php mysql

$pos = $_POST['pos'];
$played = $_POST['played'];
$won = $_POST['won'];
$drawn = $_POST['drawn'];
$lost = $_POST['lost'];
$goalsfor = $_POST['goalsfor'];
$goalsag = $_POST['goalsag'];
$goaldif = $_POST['goalsdif'];
$points = $_POST['points'];



if (mysqli_query($db,"UPDATE division2 SET Pos ='".$pos."', played ='".$played."', won ='".$won."', drawn ='".$drawn."', lost ='".$lost."', goalsfor ='".$goalsfor."', goalsag ='".$goalsag."', goalsdif ='".$goaldif."', points ='".$points."',  WHERE team = Treaty Celtic") === true) {
    echo '<script language="javascript">';
    echo 'alert("Row Successfully Inserted")';
    echo '</script>';
    include("index.html");

这是我到目前为止,但我一直得到“错误插入行” 我想在php中使用$ _Post从用户输入更新整行。

3 个答案:

答案 0 :(得分:3)

WHERE team = Treaty Celtic是这里的问题之一。

这需要用引号括起来,因为我们正在处理字符串。

WHERE team = 'Treaty Celtic'

如果检查错误,就会捕获这两个语法错误。

阅读字符串文字:

并检查错误会引发一个关于它的语法错误。

中的尾随逗号
points ='".$points."', <<< THERE

删除它。

还要确保这些POST数组在HTML表单中具有各自名称属性的值。

error reporting添加到文件的顶部,这有助于查找错误。

<?php 
error_reporting(E_ALL);
ini_set('display_errors', 1);

// Then the rest of your code

旁注:只应在暂存时进行显示错误,而不是生产。

or die(mysqli_error($db))添加到mysqli_query()

或作为else的{​​{1}}:

if

现在看来它不适合您,请确保您使用与查询相同的MySQL API,即else { echo "Error: " . mysqli_error($db); }

不同的API不会混合。

作为奖励:

您目前的代码向SQL injection开放。使用mysqli_* with prepared statementsPDOprepared statements

答案 1 :(得分:1)

我在您的查询中发现了两个错误,在字段列表的末尾添加了$amount = '120090'; setlocale(LC_MONETARY, 'en_IN'); $amount = money_format('%!i', $amount); print $amount; ,在where条件中缺少,。将其更新为以下内容:

'

答案 2 :(得分:0)

您需要确保已从用户表单发送POST。使用if (!empty($_POST)){...}确认帖子是否已发生。将整个块代码移动到if块。

if (!empty($_POST)){
   //your entire code here... 
}else{
   echo "No POST !!!";
}

可能有一些带有NOT NULL属性的列导致错误......祝你好运..