Php zend框架中的mysql查询需要一些提示

Php zend框架中的mysql查询需要一些提示,php,mysql,zend-framework,Php,Mysql,Zend Framework,我在mysql zend framwork中有一个问题,还有其他的写作方法吗 $select = $this->select () ->where ( "phone = '" . $post ['phone'] . "'") ->where(!( "member_id != '" .$post['member_id'] . "'")); 我想做的是更新会员的电话号码,看看datbase中是否已经存在电话号码。还有其

我在mysql zend framwork中有一个问题,还有其他的写作方法吗

$select = $this->select ()
               ->where ( "phone =  '" . $post ['phone'] . "'")
               ->where(!( "member_id != '" .$post['member_id'] . "'"));

我想做的是更新会员的电话号码,看看datbase中是否已经存在电话号码。还有其他方法吗?有人能回答吗?要做到这一点,我建议您在表单上使用验证程序

示例表格:

        //phone
    $this->addElement('text', 'phone',
                      array('label' => 'Phone', 'required' => true));
    $params = array(
        'table' => 'User',
        'field' => 'phone',
    );
    $this->phone->addValidator('Db_NoRecordExistPhone', false, array($params));

验证程序写入将返回控件的查询应该是true或false。

为此,我建议您在表单上使用验证程序

示例表格:

        //phone
    $this->addElement('text', 'phone',
                      array('label' => 'Phone', 'required' => true));
    $params = array(
        'table' => 'User',
        'field' => 'phone',
    );
    $this->phone->addValidator('Db_NoRecordExistPhone', false, array($params));

验证程序在将返回控件的查询中写入的内容应为true或false。

首先,您的代码存在安全问题。始终使用安全报价:

->where("phone = ?",$post["phone"])
对于这个问题,您可以在表单上使用Zend_Validate_Db_NoRecordExists验证器。以下是一些有用的链接:


使用此验证器的目的是精确地检查数据库中是否存在给定的值,而无需对查询进行任何额外的工作。

首先,您的代码存在安全问题。始终使用安全报价:

->where("phone = ?",$post["phone"])
对于这个问题,您可以在表单上使用Zend_Validate_Db_NoRecordExists验证器。以下是一些有用的链接:


使用此验证器的目的是精确地检查数据库中是否存在给定的值,而无需对查询进行任何额外的工作。

您确定代码最后一行中的验证器名称吗?;)Db_Norecordexist电话在那里。这是一个虚构的名字。您必须按照您想要的名称编写您和验证程序!为什么?无论如何,有一个标准验证器,为什么要编写另一个做完全相同事情的验证器?为什么要检查是否存在相同的手机而不考虑成员id,而标准验证器只检查数据库中是否存在以及手机的当前值。不是吗?不是。如果只考虑密钥对:phone+uid,则根本不需要检查。对于给定的用户ID,只有一个用户记录。您只需运行一个更新,而完全忘记任何验证。OP要求验证,所以我很明显他不希望两个用户拥有相同的电话号码。如果我错了,请纠正我。无论如何,即使您的推理是正确的,标准验证器也可以检查多个列。您确定代码最后一行的验证器名称吗?;)Db_Norecordexist电话在那里。这是一个虚构的名字。您必须按照您想要的名称编写您和验证程序!为什么?无论如何,有一个标准验证器,为什么要编写另一个做完全相同事情的验证器?为什么要检查是否存在相同的手机而不考虑成员id,而标准验证器只检查数据库中是否存在以及手机的当前值。不是吗?不是。如果只考虑密钥对:phone+uid,则根本不需要检查。对于给定的用户ID,只有一个用户记录。您只需运行一个更新,而完全忘记任何验证。OP要求验证,所以我很明显他不希望两个用户拥有相同的电话号码。如果我错了,请纠正我。无论如何,即使您的推理是正确的,标准验证器也可以检查多个列。对不起,每个帖子一个问题。只需按照说明操作即可。如果问题不符合质量标准,你应该了解问题所在。也许还不够明确。记住要详细阐述你的问题,尽可能多地给出细节。在本例中,您需要描述所需的效果、当前代码以及它的错误。应该可以。对不起,每个帖子一个问题。按照说明就行了。如果问题不符合质量标准,你应该了解问题所在。也许还不够明确。记住要详细阐述你的问题,尽可能多地给出细节。在本例中,您需要描述所需的效果、当前代码以及它的错误。应该可以。