如何在PHP MySQL中构建查询字符串

时间:2016-06-08 19:36:40

标签: php mysql relational-database

我正在构建与MySQL数据库相关的php应用程序。我在执行特定查询时遇到一些问题,因为我没有使用复杂的查询。我想找出如何构建查询字符串来执行此操作: 基于" cad_proc" " sigla"我想得到" estado"来自" juizo"确保我正在寻找" cad_proc"有" MG"在它上面。

Table1: cad_proc               
id - sigla  - ...             
01 - MG105  - ...                        
03 - M123   - ...            
Table2: juizo
sigla - estado -...
MG105 - MG
M123  - MG

到目前为止,我的查询是:

SELECT * FROM cad_processo WHERE sigla like '$UF';

$UF是来自用户的输入。

4 个答案:

答案 0 :(得分:0)

您发布的功能的正确语法是:

"SELECT * FROM cad_processo WHERE sigla = (SELECT sigla FROM juizo WHERE estado like '%".$UF."%')";

首先,这不是很安全,因为您以这种方式运行SQL注入的风险。为了防止使用bindValue并用关键字替换变量。 (参考:http://php.net/manual/en/pdostatement.bindvalue.php

答案 1 :(得分:0)

SELECT cad_proc.sigla, juizo.estado, FROM cad_proc INNER JOIN juizo WHERE cad_proc.sigla = juizo.sigla AND juizo.sigla = '%".$UF."%';

答案 2 :(得分:0)

我认为这是你想要的结果

Select card_proc.*, juizo.estado from card_proc left join juizo on (card_proc.sigla=juizo.sigla) where card_proc.sigla like '%$UF%'

或者如果你想做完全匹配..

Select card_proc.*, juizo.estado from card_proc left join juizo on (card_proc.sigla=juizo.sigla) where card_proc.sigla = '$UF'

更新了查询..

 Select card_proc.* from card_proc left join juizo on (card_proc.sigla=juizo.sigla) where juizo.estado = '$UF'

答案 3 :(得分:0)

您应该可以使用这样的join来获取所需的数据:

select cp.sigla from cad_proc as cp
join juizo as j
on j.sigla = cp.sigla
where j.estado = ?

然后绑定$UF

这似乎是获取数据的一种回合方式。鉴于样本数据在两个表格中是一致的,我只会使用:

SELECT sigla from juizo where estado = ?