Open ioseb opened 10 years ago
@ioseb ვერ ვხვდები, ვთქვათ db_select-ის შემთხვევაში $condition აუცილებლად ერთი იქნება თუ მეტიც შეიძლება იყოს? თუ მრავალი შეიძლება იყოს მაშინ AND და OR-ის განსხვავებაც ხო მომიწევს თვითონ ფუნქციის შიგნით?
select ასე მიწერია და დიდი აბსურდია თუ სხვებიც ასე გავაკეთო?
function db_select($table, $conditions, $ao = 1)
{
//bazastan kavshiri
$db = dbConnect();
if ($ao == 1) {
$ao = "AND";
} else if ($ao == 0) {
$ao = "OR";
} else {
return "error: 3rd argument is invalid. please provide integer 1 if you want AND statement and 0 if you want OR statement";;
}
$where = "";
foreach ($conditions as $key => $value) {
if ($where == "") {
$where .= $key . " = " . $value;
} else {
$where .= " {$ao} " . $key . " = " . $value;
}
}
$brb = $db->query("SELECT * FROM {$table} WHERE {$where}");
$result = $brb->fetchAll();
return $result;
}
@realioseb პირველ რიგში სანამ AND/OR პრობლემის გადაწყვეტით დავიწყებთ, მნიშვნელოვანია ე.წ. პრიპეარდ სტეიტმენტი გამოიყენო. მასე მოთხოვნა არ უნდა ააგო.
შემდეგ, return: error...
რომ გაქვს შეცდომების დამუშაბება მასე არ ხდება... იდეურად არასწორია. ყველაზე მარტივად მოგვარებადი იქნება თუ return NULL
- ს დააბრუნებ, ან throw new Exception...
- ს გამოიყენებ შესაბამისი მესიჯით.
შეცდომის თემა რომ გავაგრძელოთ მანდ, მარტივად შეძლება ეგ პირობა მთლიანად გადაწერო შემდეგნაირად:
$ao = !!$ao;
და დამთავრდება ყველაფერი, ან TRUE
გექნება ყოველთვის და ან FALSE
.
@realioseb
@realioseb ფუნქციების სახელები ერთ სტილში გააკეთე:
$db = dbConnect();
ასე გადააკეთე:
$db = db_connect();
ასევე კოდის ამ ფრაგმენტში:
function db_select($table, $conditions, $ao = 1)
$ao
პარამეტრის ნაგულისხმევი მნიშვნელობა დააყენე TRUE
შენ მანდ ჭეშმარიტი/მცდარი შესაბამისობა გაქვს და კოდიდან უნდა ჩანდეს. უბრალოდ 1
რომ გიწერია ხსენებული შესაბამისობა არ ჩანს.
function db_select($table, $conditions, $ao = TRUE)
@ioseb დავწერე ეს ფუნქციები და ცალკე კლასში გავიტანე db_functions
, შეგიძლიათ ნახოთ შესაბამისი კომიტი.
ასევე დავამატე პრივატული მეთოდები, მაგალითად setUpWhereStmt()
:
მისი მიზანია გადაცემული არგუმენტის მიხედვით გაამზადოს query-ის ის ნაწილი რომელიც მოსდევს WHERE-ს (ანუ ჩასვას საჭირო რაოდენობის კითხვის ნიშნები) და მოგვცეს შესაბამისი მასივი, რომელიც შეიცავს გადაცემული არგუმენტის ელემენტებს ჩვენთვის საჭირო თანმიმდევრობით.
მაგალითად ასეთ მასივის გადაცემის შემთხვევაში:
$conditions = array('id' => 3, 'country' => 'georgia');
მეთოდი დააბრუნებს ასეთ მასივს
array(2) {
["options"]=> array(4) {
[0]=> string(2) "id"
[1]=> int(3)
[2]=> string(7) "country"
[3]=> string(7) "georgia"
}
["where"]=> string(16) "? = ? AND ? = ?"
}
@realioseb აბა შესაბამისი კომიტი? კომიტის მესიჯში #10 მიაწერე ხოლმე და გაილინკება ავტომატურად სად ვიქექო ასე? :dart:
@ioseb mysqli_stmt_bind_param()
და mysqli_stmt_bind_result()
რეებს აკეთებენ, შეგიძლიათ რომ ორიოდ სიტყვით ამიხსნათ?
@realioseb ასეთ რამეს რომ გააკეთებ:
git commit -m "#10 implemented some cool features..."
გიტი აიღებს იმ #10 - ს და 1) ლინკად აქცევს; და 2) ამ დისკუსიას მიაბავს ავტომატურად.
განახორციელეთ შემდეგი ინტერფეისის იმპლემენტაცია. გაითვალისწინეთ, რომ აპლიკაციის კოდში უნდა გამოიყენოთ მხოლოდ ეს ინტერფეისი.
მთლიანად თქვენი გასაკეთებელია.
ინტერფეისი:
გამოყენების ნიმუშები: