发出使用SQL / PHP更新记录的问题

时间:2018-07-15 23:23:10

标签: php html sql record

我对PHP非常陌生。抱歉,这是一个基本问题。

我正在尝试使用PHP / SQL更新记录。我已经用Google搜索了此错误,但是无法从我的代码的上下文中确定问题:

  

发生错误:SQLSTATE [HY093]:无效的参数编号:绑定变量的数量与令牌的数量不匹配

这是我的功能:

function updateTeam($val) {

  global $server, $db, $dbUser, $dbKey, $message;

  try {
    $conn = new PDO("mysql:host=" . $server . ";dbname=" . $db, $dbUser, $dbKey);
    $conn -> setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    $sql = $conn -> prepare("UPDATE Team SET teamName=:teamName, teamLogo=:teamLogo, WHERE teamID=" . $val);

    $sql -> bindValue(":teamID", $_POST["teamID"]);
    $sql -> bindValue(":teamName", $_POST["teamName"]);
    $sql -> bindValue(":teamLogo", $_POST["teamLogo"]);

    $result = $sql -> execute();

    if ($result) {
      $message = "Customer record was updated";
    } else {
      $message = "The Customer record was not updated";
    }
  }

  catch(PDOException $e) {
    echo "<div class='notification container'><p>An error occured: " . $e -> getMessage() . "</p></div>";
  }

  $conn = null;
}

if (isset($_POST["updateTeam"])) {
  updateTeam($_POST["teamID"]);
}

这是我的标记:

<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">
  <label>Team ID</label>
  <input type="text" name="teamID" placeholder="9" value="<?php echo $teamID; ?>">
  <label>Team name</label>
  <input type="text" name="teamName" placeholder="Watson's Bay Warriors" value="<?php echo $teamName; ?>">
  <label>Team logo (optional)</label>
  <input type="text" name="teamLogo" placeholder="Blob" value="<?php echo $teamLogo; ?>">
  <input type="submit" name="insertTeam" value="Add">
  <input type="submit" name="getTeam" value="Get">
  <input type="submit" name="updateTeam" value="Update">
  <input type="submit" name="deleteTeam" value="Delete">
</form>

我有类似的功能,可以添加,获取和删除,没有任何问题。

2 个答案:

答案 0 :(得分:1)

git config --global user.email johndoe@example.com

删除WHERE子句前的逗号

答案 1 :(得分:0)

在您的代码中:

 $sql = $conn -> prepare("UPDATE Team SET teamName=:teamName, teamLogo=:teamLogo, WHERE teamID=" . $val);

 $sql -> bindValue(":teamID", $_POST["teamID"]);
 $sql -> bindValue(":teamName", $_POST["teamName"]);
 $sql -> bindValue(":teamLogo", $_POST["teamLogo"]);

为什么teamID =“。$ val但您将参数teamID绑定到发布值上?这可能是错误吗?