【问题标题】:SQL Query in PHP with a "Where xxx = 'yyy'"PHP 中带有“Where xxx = 'yyy'”的 SQL 查询
【发布时间】:2017-01-29 20:29:47
【问题描述】:

所以我想在网页上显示一个查询,我正在使用 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. FC Köln'”的网页上可以 100% 正常工作。我认为问题在于查询在撇号(')中,所以我使用撇号表示'1。 FC Köln' 销毁查询。

我该如何解决这个问题?

提前致谢!!

【问题讨论】:

  • 用反斜杠转义单引号。 \' 或者使用法语引号`

标签: php html sql sql-server


【解决方案1】:

当你使用 ' in : '1. FC Kö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';

【讨论】:

    【解决方案2】:
    $p.club = pg_escape_string($club);
    

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

    【讨论】:

    • 他们不使用 mysqli_。他们在 sql-server 上使用pg_*
    猜你喜欢
    • 2011-08-09
    • 1970-01-01
    • 1970-01-01
    • 2016-03-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-06
    • 2022-01-21
    相关资源
    最近更新 更多