मैं इस समय MySQLi के साथ खेल रहा हूं, यह पता लगाने की कोशिश कर रहा हूं कि यह सब कैसे काम करता है। मेरी वर्तमान परियोजनाओं में मैं हमेशा कोडिंग करते समय एक क्वेरी स्ट्रिंग को प्रतिबिंबित करना चाहता हूं, बस यह सुनिश्चित करने के लिए कि सब कुछ सही है, और मेरे कोड को जल्दी से डीबग करने के लिए। लेकिन ... मैं इसे एक तैयार MySQLi कथन के साथ कैसे कर सकता हूं?एक MySQLi तैयार कथन कैसे गूंजें?
उदाहरण:
$id = 1;
$baz = 'something';
if ($stmt = $mysqli->prepare("SELECT foo FROM bar WHERE id=? AND baz=?")) {
$stmt->bind_param('is',$id,$baz);
// how to preview this prepared query before acutally executing it?
// $stmt->execute();
}
मैं इस सूची (http://www.php.net/mysqli) के माध्यम से, लेकिन किसी भी भाग्य के बिना चल रहा है।
संपादित
ठीक है, अगर यह MySQLi के भीतर से संभव नहीं है, शायद मैं कुछ के साथ इस तरह रह सकते हैं:,
function preparedQuery($sql,$params) {
for ($i=0; $i<count($params); $i++) {
$sql = preg_replace('/\?/',$params[$i],$sql,1);
}
return $sql;
}
$id = 1;
$baz = 'something';
$sql = "SELECT foo FROM bar WHERE id=? AND baz=?";
echo preparedQuery($sql,array($id,$baz));
// outputs: SELECT foo FROM bar WHERE id=1 AND baz=something
सही से दूर स्पष्ट रूप से यह अभी भी बहुत बेमानी है, क्योंकि — कुछ मैं — को रोकना चाहता था और यह मुझे यह भी नहीं बताता कि MySQLi द्वारा डेटा के साथ क्या किया जा रहा है। लेकिन मुझे लगता है कि मैं इस तरह से अनुमान लगा सकता हूं कि क्या सभी डेटा मौजूद है और सही जगह पर है, और यह मुझे कुछ समय बचाएगा, मैन्युअल रूप से क्वेरी — में चर में फ़िट करने की तुलना में कई वर्रों के साथ दर्द हो सकता है ।
वाह, ऐसा कोई तरीका नहीं दिखता है। दुख की बात है ... मैं उम्मीद कर रहा था कि मैं mysqli पर स्विच कर सकता हूं, लेकिन मुझे इतिहास के लिए चलाए गए सभी SQL कथन रिकॉर्ड करने की आवश्यकता है। –
आप शायद अपने MySQL सर्वर को –
हाँ प्राप्त करने वाले सभी प्रश्नों को लॉग कर सकते हैं, यह सहायक है, लेकिन मैं SELECTS को लॉग नहीं करना चाहता हूं और यह डिबगिंग के साथ बहुत मदद नहीं करता है क्योंकि प्रति सेकंड कई प्रश्न हो सकते हैं। –