更新Else插入MySQL查询

时间:2011-11-30 03:03:18

标签: mysql insert

你好我昨天在这里遇到这个问题,我真的不知道如何使用这个网站,因为我是新的,所以我转发。但我在这段代码中遇到错误,我认为它的Update查询包含语法错误。

//更新玩家的记录是否已存在

    $result = mysql_query("UPDATE PlayerStat SET Position='$POS', Number='$NUM', Name='$PlyrName', Status='$Status', TDS='$TDS', INT='$INT', YDS='$YDS', RTG='$RTG', Team='$Team' WHERE Name='$PlyrName'");
    echo mysql_error();
    if (mysql_affected_rows()==0){
        // Populates table if record is non existent
        $result = mysql_query("INSERT INTO PlayerStat(`Position`, `Number`, `Name`, `Status`, `TDS`, `INT`, `YDS`, `RTG`, `Team`) VALUES ('$POS','$NUM','$PlyrName','$Status','$TDS','$INT','$YDS','$RTG','$Team')");
        echo mysql_error();
    }

错误讯息

您的SQL语法有错误;检查与MySQL服务器版本对应的手册,以便在'INT ='1'附近使用正确的语法,YDS = '86',RTG = '52 .5',Team ='ARI'WHERE Name ='Bartel,Richard''在第1行

3 个答案:

答案 0 :(得分:2)

INT是mysql中的一个关键字(声明和整数),如果它是你的列名,你应该像它一样包围反引号(`):`INT`。

尽管在所有情况下都没有必要,但最好将它们放入

UPDATE
    PlayerStat
SET
    `Position` =  '$POS',
    `Number` = '$NUM',
    `Name` = '$PlyrName',
    `Status` = '$Status',
    `TDS` = '$TDS',
    `INT` = '$INT',
    `YDS` = '$YDS',
    `RTG` = '$RTG',
    `Team` = '$Team'
WHERE
    `Name` = '$PlyrName'

答案 1 :(得分:1)

两件事:

  1. 查看INSERT ... ON DUPLICATE KEY UPDATE的手册,该手册应在一个声明中执行此操作。

  2. 我建议您仔细查看PHP中的mysql_real_escape_string()或类似内容,以逃避数据并阻止SQL注入。

  3. 如果你不知道SQL注入是什么,那么谷歌它并花一点时间现在阅读它为时已晚,而且一些cracker或script kitty有你的数据库。

    希望这有帮助!

答案 2 :(得分:0)

您可能想查看这些网站。 http://www.w3schools.com/php/php_mysql_update.asp http://www.tizag.com/mysqlTutorial/mysqlupdate.php

您可能还想查看拼写错误或单引号或双引号。除此之外,请检查数据库命名和数据类型。