如果我在查询中指定所需的ID,则我的代码可以很好地工作。但是,当尝试通过URL解析它时不起作用。
if(!$rs = mysql_query("SELECT id_player, fight, sh, pl, st, ch, ma, hi, sk, en, pe, fa, le, str, team, contract_lenght, main_position, alternate_position, salary, player_name, TRUNCATE(((sh + pl + st)/3),0) AS OFF, TRUNCATE(((ch + ma + hi)/3),0) as DEF, TRUNCATE(((sh + pl + st + ch + ma + hi + sk + en + pe + fa + le + str + pot + con + greed)/15),0) as OV, main_position.id, main_position.type_main_position, alternate_position.id, alternate_position.type_alternate_position, nom_equipe_nhl.team_id, nom_equipe_nhl.team_name, nom_equipe_nhl.team_abr FROM players_nhl INNER JOIN nom_equipe_nhl ON nom_equipe_nhl.team_id = players_nhl.team INNER JOIN main_position ON players_nhl.main_position = main_position.id INNER JOIN alternate_position ON players_nhl.alternate_position = alternate_position.id WHERE id_player='$id_player'")) {
我也将其放在页面顶部。
<?php
$id_player = mysql_real_escape_string($_GET['id_player']);
?>
如果我将$ id_player替换为一个数字,则可以使用,但是如果我使用?id_player = 25解析URL,则会始终找不到结果。
我尝试了很多事情,但似乎无法使它起作用。但是,如果我替换了所有内部连接以及“ as OV”之后和From Players之后的所有内容,它将起作用。即;
if(!$rs = mysql_query("SELECT id_player, fight, sh, pl, st, ch, ma, hi, sk, en, pe, fa, le, str, team, contract_lenght, main_position, alternate_position, salary, player_name, TRUNCATE(((sh + pl + st)/3),0) AS OFF, TRUNCATE(((ch + ma + hi)/3),0) as DEF, TRUNCATE(((sh + pl + st + ch + ma + hi + sk + en + pe + fa + le + str + pot + con + greed)/15),0) as OV FROM players_nhl WHERE id_player='$id_player'")) {
我真的需要通过带有内部联接的URL解析id。
谢谢
答案 0 :(得分:1)
mysql_real_escape_string()
此扩展在PHP 5.5.0中已弃用,在PHP 7.0.0中已删除。 您应该使用mysqli或pdo。
那是正确的语法:
$id_player = mysqli_real_escape_string($your_connection_object, $_GET['id_player']);
或采用OOP表示法:
$your_connection_object->real_escape_string();
与mysql_query()的描述相同...
mysql_query("SELECT id_player,...
成为
mysqli_query($your_connection_object, $your_query);
或在OOP中:
$your_connection_object->query($your_query);