mysql
  • insert
  • 2011-11-30 101 views 0 likes 
    0

    你好,我昨天在这里与这个问题,我真的不知道如何使用这个网站,因为我是新的,所以我转发。但我得到这个代码块的错误,我认为它的更新查询包含语法错误。更新否则插入MySQL查询

    //更新,如果玩家的记录已经存在

    $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

    回答

    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' 
    
    +0

    嘿,那肯定有帮助。但它不会更新数据库中的旧记录,而只是重新制作它们:( –

    +0

    您的方法会插入而不是更新?如果情况如此,您可能会遇到更多逻辑问题,或者您没有设置数据就像你认为你在你的数据库中做的那样,我会首先尝试在你的dbs UI(PHPMyAdmin或其他)中执行它,然后看看你得到了什么结果,更好的办法是把它转换成一个SELECT语句并在那里执行它。 – Godwin

    0

    您可能需要检查这些网站的良好实践。 http://www.w3schools.com/php/php_mysql_update.asp http://www.tizag.com/mysqlTutorial/mysqlupdate.php

    而且你还可能要检查你的拼写错误或单引号或双引号。除此之外,请检查您的数据库名称和数据类型。

    1

    两件事情:

    1. 检查手册INSERT ... ON DUPLICATE KEY UPDATE应在一个声明中做到这一点。

    2. 我建议你仔细看看mysql_real_escape_string()或类似的PHP来逃避你的数据并防止SQL注入。

    如果你不知道什么是SQL注射,然后谷歌,并花一点时间阅读现在是太晚了,一些饼干或脚本吉蒂您的数据库之前。

    希望这会有所帮助!

    相关问题