थोड़ी सी पीडीओ समस्या है, कि मैं थोड़ी देर के लिए काम कर रहा हूं। चूंकि मुझे नहीं पता कि यहां क्या गलत है, मैंने इसे इस सूची में लेने के बारे में सोचा। शायद आप में से कुछ और जानें ...php/pdo/msql - पहुंच से इनकार किया गया
मेरे पास एक लॉगिन के साथ एक वेबसाइट है जो एक उपयोगकर्ता और एक MySQL संचालित डेटाबेस के खिलाफ एक पासवर्ड की जांच करता है। जब एक ही फाइल में पीडीओ कनेक्शन बनाया जाता है तो सभी ठीक काम करते हैं, कोई भी बिना किसी समस्या के लॉग इन कर सकता है। बस के रूप में यह काम करने के लिए माना जाता है ...
हालांकि, जब एक अलग समारोह है, जो मैं किसी अन्य फ़ाइल से शामिल करने के लिए डेटाबेस कनेक्शन हिस्सा चलती, पीडीओ मुझ पर विफल रहता है, और मुझे देता है:
SQLSTATE[28000] [1045] Access denied for user '...'@'...' (using password: NO) Fatal error: Call to a member function prepare() on a non-object in /.../.../... on line 41
संस्करण 1::
यह काम करता है:
स्पष्टता रखने के लिए, यहाँ कोड हैयहाँ संस्करण 2
है यह काम नहीं करता:
<?php
require "./vars_and_functions.php";
/* open database connection */
$pdo = database_connection();
/* query */
$query = "SELECT uname, passw FROM members WHERE uname = ? AND passw = ?";
$q = $pdo->prepare($query);
$q->execute(array($u_name, $p_word_md5));
$result = $q->rowCount();
if($result == 1) { /* we have a match */
/* close the database connection */
$pdo = null;
/* and redirect */
header("...");
} /* if */
else { /* wrong credentials */
/* close the database connection */
$pdo = null;
/* and go back to the login page */
header("...");
} /* else */
} /* try */
catch(PDOException $e) {
echo $e->getMessage();
} /* catch */
?>
मेरे includefile vars_and_functions.php इस तरह दिखता है:
$db_host = "...";
$db_name = "...";
$db_user = "...";
$db_pass = "...";
function database_connection() {
try {
$pdo = new PDO("mysql:host=$db_host;dbname=$db_name", $db_user, $db_pass);
}
catch(PDOException $e) {
echo $e->getMessage();
}
return $pdo;
}
मेरे मन को केवल वास्तविक अंतर है यहां, पीडीओ कनेक्शन फ़ंक्शन कॉल के माध्यम से किया जाता है, जबकि फ़ंक्शन फ़ाइल vars_and_functions.php फ़ाइल में बैठता है।
क्या गलत है?
'error_reporting' सक्षम करें, जो आपको बताएगा कि वेरिएबल स्थानीय चरणीय क्षेत्र में चर उपलब्ध नहीं हैं। – mario
ठीक है दोस्तों, मुझे एहसास है कि कोड की प्रस्तुति यहां थोड़ा गन्दा दिखती है। मैं इसे सही करने पर काम कर रहा हूं ... – user1803765