如何使用内联接通过URL解析ID

时间:2019-04-20 22:01:22

标签: php mysql

如果我在查询中指定所需的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。

谢谢

1 个答案:

答案 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);