PHP中的SQL查询带有“Where xxx ='yyy'”

时间:2017-01-29 20:29:48

标签: php html sql sql-server

所以我想在网页上显示一个查询,我正在使用PHP来完成它。以下是我查询的完整PHP代码:

<?php
$query = 'SELECT p.name, p.club, f.link, ROUND(2016-p.birthyear, 0) AS "age", p.position
FROM pplayers p, pflags f
WHERE p.country = f.country AND p.club = '1. FC Köln'
ORDER BY name';
$result = pg_query($query) or die('Query failed: ' . pg_last_error());
while ($x = pg_fetch_object($result)) {
echo "<tr> <td> $x->name <td> $x->club <td> $x->link <td> $x->age <td> $x->position <td> \n";
}
pg_free_result($result);
pg_close($dbconn);
?>

查询(撇号内的部分)在SQL中100%正常运行,并且在没有“p.club ='1.FCKöln'”的情况下,它在网页上100%正常工作。我认为问题是查询是在撇号('),所以我使用撇号'1的事实。 FCKöln'破坏了查询。

我该如何解决这个问题?

提前非常感谢!!

2 个答案:

答案 0 :(得分:0)

使用'in:'时1。 FCKöln'你正在关闭查询字符串,使用双引号或转义它们:

$query = 'SELECT p.name, p.club, f.link, ROUND(2016-p.birthyear, 0) AS "age", p.position
FROM pplayers p, pflags f
WHERE p.country = f.country AND p.club = \'1. FC Köln\'
ORDER BY name';

或者:

$query = 'SELECT p.name, p.club, f.link, ROUND(2016-p.birthyear, 0) AS "age", p.position
FROM pplayers p, pflags f
WHERE p.country = f.country AND p.club = "1. FC Köln\"
ORDER BY name';

答案 1 :(得分:0)

$p.club = pg_escape_string($club);

然后使用$ p.club变量进行查询