【问题标题】:Update query executing but not updating table更新查询执行但不更新表
【发布时间】:2014-03-25 12:26:04
【问题描述】:

我在使用带有 WHERE 子句的 UPDATE 语句时遇到困难

我正在使用以下代码尝试更新表中的记录,其中小队号是小队号下拉列表中的值。

<img src="header.png" alt="Southside FC Header">
<h1>Player Statistics</h1> 

<?php

require("config.inc.php");

if (!empty($_POST)) {

    //initial query
    $query = "UPDATE playerstatistics SET squadnumber=':squadnumber', appearances=':appearances', subappearances=':subappearances', 
    goalsscored=':goalsscored', yellowcards=':yellowcards', redcards=':redcards' WHERE squadnumber=':squadnumber'";

    //Update query
    $query_params = array(
        ':squadnumber' => $_POST['squadnumber'],
        ':appearances' => $_POST['appearances'],
        ':subappearances' => $_POST['subappearances'],
        ':goalsscored' => $_POST['goalsscored'],
        ':yellowcards' => $_POST['yellowcards'],
        ':redcards' => $_POST['redcards']

    );


    try {
        $stmt   = $db->prepare($query);
        $result = $stmt->execute($query_params);
    }
    catch (PDOException $ex) {
        // For testing, you could use a die and message. 
        //die("Failed to run query: " . $ex->getMessage());

        //or just use this use this one:
        $response["success"] = 0;
        header('Location: http://localhost/webservice/errorCouldNotAddData.php');
        die(json_encode($response));
    }

    $response["success"] = 1;
    header('Location: http://localhost/webservice/managerhomepage.php');
    echo json_encode($response);

} else {


?>
<br /> 

<form action="addplayerstatistic.php" method="post">

Squad Number: <br />
<select name="squadnumber">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="6">6</option>
<option value="7">7</option>
<option value="8">8</option>
<option value="9">9</option>
<option value="10">10</option>
<option value="11">11</option>
<option value="12">12</option>
<option value="14">14</option>
<option value="15">15</option>
<option value="16">16</option>
<option value="17">17</option>
</select>
<br />

Number of appearances:<br /> 
<input type="number" name="appearances"/><br />

Number of appearances as a substitute:<br /> 
<input type="number" name="subappearances"/><br />

Number of Goals Scored:<br /> 
<input type="number" name="goalsscored"/><br />

Number of yellow cards:<br /> 
<input type="number" name="yellowcards"/><br />

Number of red cards:<br /> 
<input type="number" name="redcards"/><br />

<input type="submit" value="Add statistics" /> 
</form>

<a href="managerhomepage.php"><img src="backButton.png"></a>
<?php

}

?>

$response["success"] 被设置为 1,因为查询似乎运行正确,但是当我检查数据库时没有任何变化。

我认为我的问题在于 WHERE 子句未设置为下拉列表中的数字,因此没有更新任何行。

有什么想法吗?

谢谢

【问题讨论】:

  • $response['success']=1 没有被设置.. 你正在设置它,把它放在try function....
  • 你是对的,那是设置在错误的地方。然而,这不是主要问题。问题围绕更新查询和其中的值未设置为下拉和文本字段中的值。
  • 从您的comments (\\) 中删除die function in try.. 并检查会发生什么..
  • 刚刚试了,不死。它似乎仍然更新了表格,即使它没有更新。

标签: php sql sql-update


【解决方案1】:

尝试更新您的查询

$query = "UPDATE playerstatistics SET squadnumber=:squadnumber, appearances=:appearances, subappearances=:subappearances, 
goalsscored=:goalsscored, yellowcards=:yellowcards, redcards=:redcards WHERE squadnumber=:squadnumber";

您不应该逃避您的参数 - PDO 会为您做到这一点。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-04
    • 1970-01-01
    • 1970-01-01
    • 2018-06-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多