0

我有一个 mySQL 问题困扰了我好几个小时!

背景:我正在创建一个网络应用程序来教孩子们在触摸设备上使用不同的音乐符号

问题:运行这个单独的脚本后,尽管最后一个 echo 参数有效,但没有创建任何行。

奇怪:这是模仿我工作的其他脚本。

编辑:找到问题后,我将使用准备好的语句重新提供代码。

这是代码:

<?php

$database_connect = mysql_connect('localhost','ragstudi','*****');

if (!$database_connect) {die ('Not connected to SQL' . mysql_error());};

mysql_select_db('ragstudi_musicGameScores') or die ('db doesnt exist');


$userName = "Jimmy";//$_POST["username"];
$gameLevel = 1;//$_POST["level"];
$gameScore = 2300;//$_POST["score"];
$userGroup = "RagWway";

$highScores = mysql_query("INSERT INTO highScores (name, groupBy, level, score) values('".$userName."','".$userGroup."','".$gameLevel."','".$gameScore."')");
if (!$highScores){
    die(
        mysql_error()
        )
};

数据库 _musicGameScores 是这样设置的 Id, primary, auto increment, integer name, varchar groupBy, varchar level, integer score, integer

密码已加注星标。谢谢大家!

4

3 回答 3

4

GROUP是保留关键字。您必须正确地对其进行转义,以免它产生错误。

INSERT INTO highScores (id, user, `group`, level, score) VALUES(...)

作为旁注,SQL Injection如果变量的值(s)来自外部,则查询很容易受到攻击。请看下面的文章,了解如何预防。通过使用PreparedStatements,您可以摆脱在值周围使用单引号。

于 2013-04-05T00:58:38.017 回答
0

尝试在每一列中添加``,也许那里有一个保留关键字。

mysql_query("INSERT INTO highScores (`id`, `user`, `group`, `level`, `score`) values('','".$userName."','".$userGroup."','".$gameLevel."','".$gameScore."')");
于 2013-04-05T00:59:39.387 回答
0

应该是这样的。干杯! :D

$highScores = mysql_query("INSERT INTO highScores (id, user, group, level, score) values('','".$userName."','".$userGroup."','".$gameLevel."' ,'".$gameScore."')");

于 2013-04-05T01:02:57.997 回答