>更新:好的,所以$id
出于某种原因,当我期待一个 int 时,它是一个字符串。我已通过代码更改为:
$id = (int) $id;
$query = "SELECT funding_opportunities.id
FROM funding_opportunities
JOIN funders ON funding_opportunities.funder = funders.id
WHERE funders.id='$id'";
var_dump($id)
返回int(1)
并回显查询返回
SELECT funding_opportunities.id FROM funding_opportunities JOIN funders ON funding_opportunities.funder = funders.id WHERE funders.id='1'
对于查询
$id = (int) $id;
$query = "SELECT funding_opportunities.id
FROM funding_opportunities
JOIN funders ON funding_opportunities.funder = funders.id
WHERE funders.id='$id'";
var_dump($id);
echo $query;
但我仍然得到同样的错误
我有以下SQL查询,我正在尝试从我的PHP文件执行:
"SELECT funding_opportunities.id
FROM funding_opportunities
JOIN funders ON funding_opportunities.funder = funders.id
WHERE funders.id=".$id
这将返回以下错误:
错误号:1064 您的 SQL 语法有错误;请检查 与您的 MySQL 服务器版本相对应的正确手册 在第 1 行的"1"附近使用的语法
我做了以下工作:
将$id
替换为 1
作为整数,以检查我的变量中是否有不可预见的内容,同样的错误。
使用了几个在线SQL语法检查工具,未检测到任何内容。
从 PhpMyAdmin 重新构建查询,正确检索值。
任何人都可以发现错误吗?
如果ID
是int
WHERE funders.id='$id'"
如果ID
是性格——
WHERE funders.id='"".$id."'""
根据 ID 的组成,您可能需要在它周围加上单引号来验证字符串值,即:
"SELECT funding_opportunities.id
FROM funding_opportunities
JOIN funders
ON funding_opportunities.funder = funders.id
WHERE funders.id= '".$id."'"
你应该使用这样的查询
"SELECT funding_opportunities.id
FROM funding_opportunities
JOIN funders ON funding_opportunities.funder = funders.id
WHERE funders.id='".$id."' "
试试下面的sql
"SELECT funding_opportunities.id
FROM funding_opportunities
JOIN funders
ON funding_opportunities.funder = funders.id
WHERE funders.id='".$id."'";
试试这个
"SELECT funding_opportunities.id
FROM funding_opportunities
INNER JOIN funders ON funding_opportunities.funder = funders.id
WHERE funders.id=".$id
您忘记指定要使用的 JOIN。
如果变量是整数,则不需要串联
$sql = "SELECT funding_opportunities.id
FROM funding_opportunities
JOIN funders ON funding_opportunities.funder = funders.id
WHERE funders.id=$id";
使用此查询。您没有加入$id查询部分
"SELECT funding_opportunities.id FROM funding_opportunities JOIN funders ON funding_opportunities.funder = funders.id WHERE funders.id='".$id."'";