these variables are local to your connectDB () function by default, so you have to either declare them in the global scope in advance, or use $ GLOBALS to set them:
Method 1
<? php
$var1 = '';
$var2 = '';
$var3 = '';
$var4 = '';
$var5 = '';
function connectDB() {
$hostname = 'xxxxxxxx';
$db = 'xxxxxxx';
$user = 'xxxxxxxx';
$pass = 'xxxxxxx';
$dbh = new PDO("mysql:host=$hostname; dbname=$db; charset=utf8", $user, $pass, array(PDO::ATTR_EMULATE_PREPARES => false, PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
$sql = "//my query";
$query = $dbh->prepare($sql);
$query->execute(array('//value','//value'));
$query->setFetchMode(PDO::FETCH_ASSOC);
while ($r = $query->fetch()):
$var1 = $r['column1'];
$var2 = $r['column2'];
$var3 = $r['column3'];
$var4 = $r['column4'];
$var5 = $r['column5'];
endwhile;
}
?>
Method 2
<? php
function connectDB() {
$hostname = 'xxxxxxxx';
$db = 'xxxxxxx';
$user = 'xxxxxxxx';
$pass = 'xxxxxxx';
$dbh = new PDO("mysql:host=$hostname; dbname=$db; charset=utf8", $user, $pass, array(PDO::ATTR_EMULATE_PREPARES => false, PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
$sql = "//my query";
$query = $dbh->prepare($sql);
$query->execute(array('//value','//value'));
$query->setFetchMode(PDO::FETCH_ASSOC);
while ($r = $query->fetch()):
$GLOBALS['var1'] = $r['column1'];
$GLOBALS['var2'] = $r['column2'];
$GLOBALS['var3'] = $r['column3'];
$GLOBALS['var4'] = $r['column4'];
$GLOBALS['var5'] = $r['column5'];
endwhile;
}
?>
Sincerely, your copy-paste-service :)