php select işlevi garip nerede fıkra üretir

1 Cevap php

Merhaba ben select fonksiyonlarını oluşturmak için bir işlevi oluşturmak için deneyin.

Ancak aşağıdaki kod

public function select($psTableName, $paFields ="",$paWhere=array())
{
	//initial return value
	$lbReturn = false;
	try
	{
		$lsQuery = "SELECT * FROM `";
		$lsQuery .= $psTableName;
		$lsQuery .= "` ";
		if (!empty($paWhere)){
				$lsQuery .= "WHERE ";
				print_r($paWhere);
				foreach($paWhere as $lsKey => $lsValue)
				{
    				echo $lsKey."<br>";
    				$paWhere[] = $lsKey." = '".mysql_real_escape_string($lsValue)."'";
				}
				$lsQuery .= implode(" AND ", $paWhere);
				//$lsQuery = substr($lsQuery,0,(strlen($lsQuery)-5));
		}

		//echo $lsQuery;
		//execute $lsQuery
		$this->msLastQuery = $lsQuery;
		if(!$this->execute())
		{
			throw new DBException("Select failed, unable to execute query: ".$lsQuery);
		}
		else
		{
			$lbReturn = true;
		}
	}
	catch(DBException $errorMsg)
	{
		ErrorHandler::handleException($errorMsg);
	}
	return $lbReturn;
}

Bu sql deyimi oluşturur:

SELECT * FROM `persons` WHERE email@gmail.com AND 2d1cf648ca2f0b2499e62ad7386eccc2 AND 1 AND per_email = 'email@gmail.com' AND per_password = '2d1cf648ca2f0b2499e62ad7386eccc2' AND per_active = '1'

Ilk nerede fıkra sonra sadece değerleri gösterir ve sonra geri gider ve anahtar => değerlerini gösterir neden bilmiyorum.

Herhangi bir fikrin?

1 Cevap

Eğer akım değerlerine eklenecek böylece döngüye $paWhere yeniden. Sen taze bir dizi kullanmak gerekir:

$result = array();
foreach($paWhere as $lsKey => $lsValue) {
    $result[] = $lsKey . " = '" . mysql_real_escape_string($lsValue) . "'";
}
$lsQuery .= implode(" AND ", $result);