Pdo php gebrauch

subroutine

Grünschnabel
Hallo da draussen

ein Newbie hat eine Frage, mal wieder

ich habe ein kurzes Script geschrieben das alle Bilder in einem Verzeichnis in Array liest, dieses dann sortiert und anschliessend die einzelnen Werte an eine Funktion übergibt. Die Funktion wiederum prüft, ob der Dateiname mit einem Recordset in einer DB verknüpft ist...

Soweit so gut; das Script liefert das gewünschte Ergebnis, nur bin ich mir nicht sicher, ob die Struktur meines Scriptes gängig ist, d.h. im Speziellen, meine Verwendung des PDO-Objekts. Darf/Kann man das PDO-Objekt an eine Funktion weitergeben?

Für alle Anregungen, Kommentare und Kritik bin ich sehr dankbar

hier nun das Script:
PHP:
<?
require_once('../common/common_fns.php');
require_once("./preferences.inc.php");
require_once('../../Connections/accessDB.inc.php');

try {
		//Start connection
			$pdo = new PDO("mysql:host=$PDO_hostname;dbname=$PDO_database", $PDO_username, $PDO_password);
		
		//Throw exceptions on errors
			$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
		//Disable prepared statements emulations
			$pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);

		
	} catch (PDOException $e) {
	   die("An error has occurred! " . $e->getMessage());
	}



$DIR = $_SERVER['DOCUMENT_ROOT'] . $flyer_DIR;
$picsArr = array();

	if ($handle = opendir($DIR)) {
		while (false !== ($file = readdir($handle))) {
			if ($file != "." && $file != "..") {
			 if(strpos($file,"thumb")===false) {
			  $picsArr[] = $file;
			 }   
			}
		}
		closedir($handle);
	}
	
	sort($picsArr);
	reset($picsArr);

	foreach($picsArr as $value) {
	
	 echo getDependencies($value, $pdo)."<br>";
	
	}


function getDependencies($img, $db) {
$query = <<<MySQL
SELECT * 
FROM `events`
WHERE `pic`= :img 
MySQL;

	$stmt = $db->prepare($query);
	$stmt->bindValue(":img", $img);
	$stmt->execute();
	$count = $stmt->rowCount();
return $count;
}


?>
 
Zuletzt bearbeitet:
Ich hab zwar keine Erfahrung mit pdo. Aber grundsätzlich darf man Objekte schon an Funktionen übergeben. Wenn das Objekt nicht eine Kopie sein muss, macht man normalerweise aber nur eine Referenz. Das erreicht man indem man dem Parameter ein & davor setzt. Man muss einfach beachten, dann dann alle Änderungen am Objekt innerhalb der Funktion auch ausserhalb der Funktion am übergebenen Objekt Gültigkeit hat. Der Vorteil, das Obekt existiert nur einmal und verbraucht auch nur einmal Speicherplatz.
Aber grad bei Datenbankobjekten ist das häufig nicht unererwünscht.

PHP:
function getDependencies($img, &$db) {
    ...
}
 
Hallo Yaslaw

vielen lieben Dank für deine Antwort. Das mit der Referenz ist ein neues Kapitel für mich und wird mich wohl wieder eine Zeit lang beschäftigen....

mfg
 
Zurück