0

こんにちは、行が存在するかどうかを確認するメソッドがあります。

    /**
    * Method rowExists
    *
    * Checks if row exists with given parameters.
    *
    * @param name The name of the value in a column.
    * @param column The name of the given column.
    * @param table The name of the given table.
    **/

    private function rowExists($name, $column, $table)
    {
        $this->user = $this->pdo->prepare("SELECT * FROM ".$table." WHERE ".$column." = :name");
        $this->user->execute(array(":name" => $name));

        if ($this->user->rowCount() > 0)
        {
            return true;
        }
        else
        {
            return false;
        }
    }   

これで、行が存在するかどうかを確認できます

使用法:

if ($this->rowExistsAnd($this->get['user_id'], $generatedCode, 'user_id', 'generated_code', 'account_verifications') === true) {

今私が求めているのは、このメソッドはチェック用の1つのパラメーターのみをサポートしています

WHERE 2 列をチェックしたい場合はどうすればよいですか?

例:

現在のクエリは次のとおりです。

SELECT * FROM table WHERE column1 = value1

私が欲しい:

SELECT * FROM table WHERE column1 = value1 AND column2 = value2

パラメータを追加して別のメソッドを作成せずに、1 つのメソッドで実行したいと考えています。 これどうやってするの?

編集:

    private function rowDoesExist($params)
    {
        if (count($params) < 4)
        {
            $this->user = $this->pdo->prepare("SELECT * FROM ".$params[0]." WHERE ".$params[1]." = :name");
            $execute = array(":name" => $params[2]);                
        }
        else
        {
            $this->user = $this->pdo->prepare("SELECT * FROM ".$params[0]." WHERE ".$params[1]." = :name AND ".$params[2]." = :name2");
            $execute = array(":name" => $params[3], ":name2" => $params[4]);
        }
        $this->user->execute($execute));        
    }

使用法:

    $this->rowDoesExist(array('users', 'user_name', $username);
4

4 に答える 4

0

これを試して ...

 private function rowExists($name1,$name1, $column1,$column2 $table)
  {
    $cond=" where 1=1";
    if($column1)  
    $cond.=" and ". $column1."=:name1";
     if($column2) 
     $cond.=" and ". $column2."=:name2"
   $query = "SELECT * FROM ".$table.$cond;
    $this->user = $this->pdo->prepare($query);
    $this->user->execute(array(":name1" => $name1,":name2" => $name2));

    if ($this->user->rowCount() > 0)
    {
        return true;
    }
    else
    {
        return false;
    }
}   
于 2013-05-18T09:30:11.140 に答える