通过PHP传递的参数增加值

时间:2014-05-01 13:20:47

标签: mysql

原谅我的无知,但我对PHP / MySQL很陌生。

我想要达到的目标是,对于我的电台前十名,我想让人们为个别歌曲投票,当他们这样做时,增加数据库中投票数的价值。

我通过网址传递了他们点击的歌曲的价值:http://www.vlaamseradio.tk/top10/top10stem.php?Song= 它确实在页面上正确显示歌曲,说"您投票赞成"歌曲名称",但投票值不会在数据库中增加。 这是我使用的代码:

 <?php
$host="localhost";
$user="*****";
$pwd="****";
$port="";
$sys_dbname="******";
mysqli_connect($host,$username,$password,$dbname);
$_GET[Song];
mysql_query("
    UPDATE Voting 
    SET Votes= Votes+ 1 
    WHERE Song = Song'
");
echo ("You voted for $_GET[Song]" );
?>

正如我所说:消息显示正确,但投票没有增加。 知道我哪里错了吗? PS。我也尝试传递2个值,例如http:/....... / .. php?Song =&amp; id =但是这不起作用。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

您正在使用mysql_query而不是mysqli_query。你的WHERE部分也没有意义(Song = Song总是会返回true)。 另请考虑在PDO中使用MySQLi或准备好的语句来防止SQL注入攻击。

固定代码:(但请切换到PDO或预备语句)

<?php
$host="localhost";
$user="*****";
$pwd="****";
$port="";
$sys_dbname="******";
mysqli_connect($host,$username,$password,$dbname);
$song = mysql_real_escape_string($_GET['Song']);
    $songSafeHtml = htmlspecialchars($_GET['Song']);
mysqli_query("
    UPDATE Voting 
    SET Votes= Votes+ 1 
    WHERE Song = '$song'
");
echo ("You voted for $songSafeHtml" );
?>

修正了以上问题:   - SQL注入(通过mysql_real_escape_string)   - XSS(通过htmlspecialchars)