Php SOQL查询,为多个

Php SOQL查询,为多个,php,salesforce,soql,Php,Salesforce,Soql,我正在用php制作一个搜索框,从SOQL salesforce数据库访问数据。到目前为止,我有: $query=“选择Id、FirstName、LastName、联系人的电话,其中FirstName='$var' 这很好用。但是,我如何使它成为电话号码,比如说$var。因此,如果它与名字不匹配,请在电话号码中搜索匹配项,等等。这应该检查名字中是否有匹配项,或者名字中是否没有匹配项,但在电话中找到匹配项 $var=mysql_real_escape_string($var); //protect

我正在用php制作一个搜索框,从SOQL salesforce数据库访问数据。到目前为止,我有:

$query=“选择Id、FirstName、LastName、联系人的电话,其中FirstName='$var'


这很好用。但是,我如何使它成为电话号码,比如说
$var
。因此,如果它与名字不匹配,请在电话号码中搜索匹配项,等等。

这应该检查名字中是否有匹配项,或者名字中是否没有匹配项,但在电话中找到匹配项

 $var=mysql_real_escape_string($var); //protect your sql entries from sql injection, make sure to validate
 $query = "SELECT Id, FirstName, LastName, Phone From Contact WHERE FirstName = '$var' OR (FirstName !='$var' AND Phone='$var') ";
或者,如果您不介意这里或那里是否有匹配项,您可以使用
。与上一个查询相比,哪个查询的性能更好

 $query = "SELECT Id, FirstName, LastName, Phone From Contact WHERE FirstName = '$var' OR Phone='$var' ";
试试这个:

$query = "SELECT Id, FirstName, LastName, Phone From Contact WHERE FirstName LIKE '%$var%' OR Phone LIKE '%$var%'";

使用LIKE而不是=可以匹配部分名称,例如,搜索dav将导致返回David和Daves。%是通配符占位符

我也同意Dreard在下面的帖子,您希望清除$var以防止SQL注入。如果这是在一个封闭的内联网上,那么您可能不必担心它,但这是一个很好的实践。很好!谢谢尽管%$var%有一个问题,即使它是空的,我也会得到所有的结果。有没有办法告诉它var至少不能为空?编辑:实际上我遇到了另一个问题。当我使用或没有得到任何结果时:您可能需要对此进行javascript验证,这样,如果用户没有输入任何内容,在实际将数据发送到服务器之前,他们会收到警报。看看这个:哦,没关系,我把它修好了。原来mysql转义字符串不起作用。在调用mysql转义字符串之前,您需要连接到db。这对于防止有人入侵您的数据库非常重要。请向您咨询答案。不管是出于什么奇怪的原因,还是因为不适合我。如果我只有一个搜索元素,那么它就可以工作,但是如果我使用两个,它就不能工作。我还确保我要搜索的字段存在。你能发布一个$var的例子,即使它存在于数据库中也不起作用吗<代码>=
将完全匹配,
如“%”将使用通配符匹配。因此,在上面的答案中,字符串需要精确匹配。如果在db中为
abcd
,则只有
abcd
匹配,而不是
abcd
带有空格,也不是
abc
。还要确保验证
$var
。如果它是空的,那么不要搜索它。例如,$var=trim($var);然后
如果(!empty($var))
哦,我找到了原因。由于某些原因,使用mysql real escape字符串无法用于查询!是因为我在使用SOQL吗?