如何在php

时间:2017-01-02 12:44:38

标签: php mysql

我在数据库字段(称为term6eyfs)中有一个由数字组成的字符串 - > 555555。

我想知道他们中有多少人在特定位置有特定的数字。

我已尝试过以下代码,但我遇到了布尔给出的错误

$pos=2;
$analyse_ot="SELECT COUNT(*) AS ot_count FROM base, users
WHERE base.base_id=$base 
AND
users.base_id=$base
AND
users.SUBSTRING(term6eyfs,$pos,1)='4'";

$result_ot=mysqli_query($con,$analyse_ot);
$row_ot = mysqli_fetch_assoc($result_ot);//this is where I get the error
$total_ot= $row_ot['ot_count'];
$otper=($total_ot/$total)*100;

我猜测他们构建我的查询(尤其是最后一行)是不正确的,但为什么呢?

2 个答案:

答案 0 :(得分:2)

根据您在评论中提供的其他详细信息,我说这就是您要找的内容:

SELECT COUNT(*) AS ot_count 
  FROM base, users
  WHERE base.base_id=$base 
  AND   users.base_id=$base
  AND   SUBSTRING(users.term6eyfs,$pos,1)='4'";

这假设" term6eyfs"是users中列的名称)

此查询的上下文不清楚。但总的来说,使用"参数绑定"将php变量值注入查询字符串。您想要了解它,它增强了安全性和健壮性。

如果您真的想使用,运算符加入这两个表,还要重新考虑。该运算符非常慢,通常LEFT JOIN传递很多更好的性能。

答案 1 :(得分:1)

将users.substring()更改为substring

$analyse_ot="SELECT COUNT(*) AS ot_count FROM base, users
WHERE base.base_id=$base 
AND
users.base_id=$base
AND
SUBSTRING(term6eyfs,$pos,1)='4'";