【问题标题】:how do you update a row in mysql with php from a user [closed]你如何用用户的php更新mysql中的一行[关闭]
【发布时间】:2016-03-08 13:02:30
【问题描述】:
$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 从用户输入更新整行。

【问题讨论】:

  • Errr...没有代码(还没有)。
  • 你的代码在哪里?...
  • 试试这个:WHERE team = 'Treaty Celtic'
  • 刚刚尝试过 WHERE team = 'Treaty Celtic' 没用,谢谢@Azeez Kallayi

标签: php mysql


【解决方案1】:

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()

或者作为elseif

else { 
    echo "Error: " . mysqli_error($db); 
}

现在看到它不适合您,请确保您使用与查询相同的 MySQL API,即 mysqli_

不同的 API 不会混合使用。


作为奖励:

您当前的代码对SQL injection 开放。使用mysqli_* with prepared statements,或PDOprepared statements

【讨论】:

  • 我用引号包裹了 WHERE team = 条约 Celtic,错误报告在我的文件顶部,插入行时仍然出错。
  • @Walshe007 我需要知道确切的错误。
  • @Walshe007,Treaty Celtic 必须是没有尾随空格的确切字符串。 Treaty CelticTreaty celtic 不是一回事。
  • @Walshe007 为if 添加else - 如else { echo "Error: " . mysqli_error($db); } 并告诉我你看到了什么,我的回答中有一些东西。如果我不知道确切的错误是什么,我无法帮助你。错误报告也一样,如果有的话。
  • @Walshe007 决定接受哪一个。您已经为此来回反复了两次。
【解决方案2】:

我在您的查询中发现了两个错误,在字段列表末尾附加了 ,,在 where 条件下缺少 '。将其更新为以下内容:

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) {

【讨论】:

  • 试过插入行仍然出错。
  • 如果出现错误,mysqli_error($db) 会给您什么,请在 else 部分尝试,这可能会对您有所帮助
  • 它给了我字段集中的错误未知列,我检查了我的数据库列,发现我在我的 php 中拼错了两列,所以我修复了它,它现在可以工作了,错误报告帮助很大谢谢@Dharmesh Patel
【解决方案3】:

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

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

可能是某些列具有 NOT NULL 属性导致错误...祝您好运..

【讨论】: