فب اختر وظيفة يولد بند غريب حيث
-
22-08-2019 - |
سؤال
ومرحبا وأنا أحاول أن إنشاء دالة لتوليد وظائف محددة.
ولكن التعليمات البرمجية التالية
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;
}
ويولد هذا عبارة SQL:
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'
وأنا لا أعرف لماذا يظهر لأول مرة فقط القيم بعد شرط حيث ثم يعود ويظهر الرئيسية => القيم.
وأي فكرة ل؟
المحلول
ويمكنك إعادة $paWhere
في حلقة الخاص بك حتى تتمكن إلحاق القيم الحالية. تحتاج إلى استخدام مجموعة جديدة:
$result = array();
foreach($paWhere as $lsKey => $lsValue) {
$result[] = $lsKey . " = '" . mysql_real_escape_string($lsValue) . "'";
}
$lsQuery .= implode(" AND ", $result);
لا تنتمي إلى StackOverflow