HI हिन्दी
版本: v2.3.0

raw

Medoo जटिल और अत्यधिक अनुकूलन योग्य क्वेरी के लिए Raw SQL अभिव्यक्तियाँ प्रदान करता है। ये अभिव्यक्तियाँ प्लेसहोल्डर्स का समर्थन करती हैं, ताकि SQL पठनीय रहे और SQL इंजेक्शन का जोखिम कम हो। साथ ही पहचानकर्ताओं को उद्धृत करने के लिए संक्षिप्त सिंटैक्स भी उपलब्ध है।

Medoo::raw($query, $map)

सिंटैक्स

Raw SQL अभिव्यक्तियाँ पहचानकर्ताओं को उद्धृत करने के लिए एक संक्षिप्त सिंटैक्स प्रदान करती हैं। किसी कॉलम या तालिका-नाम सहित कॉलम को चिह्नित करने के लिए <name> का उपयोग करें, और Medoo आवश्यक उद्धरण अपने आप लागू कर देगा।
Medoo::raw('AVG(<weight>)')

कॉलम के लिए

आप select() या get() के कॉलम पैरामीटर में Raw ऑब्जेक्ट का उपयोग कर सकते हैं। एरे की कुंजी परिणाम में उपनाम बन जाती है।
$data = $database->get('account', [
	'user_name',
	'score' => Medoo::raw('SUM(<age> + <experience>)')
], [
	'user_id' => 100
]);
SELECT "user_name", SUM("age" + "experience") AS "score"
FROM "WP_account"
WHERE "user_id" = 100

UPDATE और INSERT के लिए

Raw ऑब्जेक्ट का उपयोग insert() और update() में कॉलम के मान के रूप में भी किया जा सकता है।
$data = $database->insert('account', [
	'user_name' => 'apple',
	'user_id' => Medoo::raw('UUID()')
]);

$data = $database->update('account', [
	'user_name' => 'apple',
	'user_id' => Medoo::raw('UUID()')
], [
	'age[>]' => 10
]);

WHERE क्लॉज के लिए

अधिक जटिल शर्तें लिखने के लिए Raw ऑब्जेक्ट को where एरे के भीतर भी इस्तेमाल किया जा सकता है।
$data = $database->select('account', [
	'user_name',
	'user_id',
], [
	'datetime[>=]' => Medoo::raw('DATE_SUB(NOW(), INTERVAL 1 DAY)'),
	'ORDER' => Medoo::raw('RAND()'),
	'LIMIT' => 10
]);
SELECT "user_name", "user_id"
FROM "account"
WHERE "datetime" >= DATE_SUB(NOW(), INTERVAL 1 DAY)
ORDER BY RAND()
LIMIT 10

प्रिपेयर्ड स्टेटमेंट के साथ

यदि Raw SQL अभिव्यक्तियों में चर या उपयोगकर्ता इनपुट से प्राप्त मान शामिल हों, तो SQL इंजेक्शन का जोखिम कम करने के लिए प्रिपेयर्ड स्टेटमेंट के साथ प्लेसहोल्डर्स का उपयोग करें।
$today = "2017-05-01";

$database->select('account', [
	'user_id',
	'user_name'
], [
	'datetime' => Medoo::raw('DATE_ADD(:today, INTERVAL 10 DAY)', [
		':today' => $today
	])
]);

पूरे WHERE क्लॉज के रूप में

उन्नत फ़िल्टरिंग के लिए आप Raw ऑब्जेक्ट को पूरे WHERE clause के रूप में भी इस्तेमाल कर सकते हैं।
$data = $database->select('account', [
		'user_id',
		'email'
	],
	Medoo::raw('WHERE
		LENGTH(<user_name>) > 5
		ORDER BY RAND()
		LIMIT 10
	')
);
SELECT "user_id", "email"
FROM "account"
WHERE LENGTH("user_name") > 5
ORDER BY RAND()
LIMIT 10