hallo,

Ik heb een script gedownload ergens waar volgende code in staat:
<?php
 function dbRow($query) {
	$q = dbQuery($query);
	return $q->fetch(PDO::FETCH_ASSOC);
}
?>


wanneer ik het script nu uitvoer, krijg ik de volgende error:

 Fatal error: Call to a member function fetch() on a non-object in blahblahblah 


Ik heb al op google gezocht of ik ergens een of ik ergens een oplossing kan vinden, maar deze vind ik niet.

Hebben jullie misschien een oplossing om dit te verhelpen?

Mvg Jules
Gooi dat script maar gelijk in het ronde archief.
Een functie maken voor iets wat al bestaat slaat natuurlijk nergens op.
Het staat in het bestand basics.php en in een ander bestand, bv wanneer je ingelogd bent worden die functies aangeroepen. De andere functies werken wel alleen deze niet.

basics.php:

<?php
session_start();
function __autoload($name) {
	require $name . '.php';
}
function dbAll($query,$key='') {
	$q = dbQuery($query);
	$results=array();
	while($r=$q->fetch(PDO::FETCH_ASSOC))$results[]=$r;
	if(!$key)return $results;
	$arr=array();
	foreach($results as $r)$arr[$r[$key]]=$r;
	return $arr;
}
function dbInit(){
	if(isset($GLOBALS['db']))return $GLOBALS['db'];
	global $DBVARS;
	$db=new PDO('mysql:host='.$DBVARS['hostname'].';dbname='.$DBVARS['db_name'],$DBVARS['username'],$DBVARS['password']);
	$db->query('SET NAMES utf8');
	$db->num_queries=0;
	$GLOBALS['db']=$db;
	return $db;
}
function dbOne($query, $field='') {
	$r = dbRow($query);
	return $r[$field];
}
function dbLastInsertId() {
	return dbOne('select last_insert_id() as id','id');
}
function dbQuery($query){
	$db=dbInit();
	$q=$db->query($query);
	$db->num_queries++;
	return $q;
}
function dbRow($query) {
	$q = dbQuery($query);
	return $q->fetch(PDO::FETCH_ASSOC);
}
define('SCRIPTBASE', $_SERVER['DOCUMENT_ROOT'] . '/');
require SCRIPTBASE . '.private/config.php';
if(!defined('CONFIG_FILE'))define('CONFIG_FILE',SCRIPTBASE.'.private/config.php');
set_include_path(SCRIPTBASE.'ww.php_classes'.PATH_SEPARATOR.get_include_path());
?>


en de error komt voor wanneer je probeert in te loggen, je word dan doorgestuurd naar login.php:

<?php
require 'login-libs.php';

login_check_is_email_provided();

// check that the password is provided
if(!isset($_REQUEST['password']) || $_REQUEST['password']==''){
	login_redirect($url,'nopassword');
}

// check that the email/password combination matches a row in the user table
$password=md5($_REQUEST['email'].'|'.$_REQUEST['password']);
$r=dbRow('select * from user_accounts where
	email="'.addslashes($_REQUEST['email']).'" and
	password="'.$password.'" and active'
);
if($r==false){
	login_redirect($url,'loginfailed');
}

// success! set the session variable, then redirect
$_SESSION['userdata']=$r;
$groups=json_decode($r['groups']);
$_SESSION['userdata']['groups']=array();
foreach($groups as $g)$_SESSION['userdata']['groups'][$g]=true;
if($r['extras']=='')$r['extras']='[]';
$_SESSION['userdata']['extras']=json_decode($r['extras']);

login_redirect($url);
?>
Ik weet niet waar je dat script vandaan hebt, maar het is gewoon bagger. Stuur het maar direct op kerstvakantie naar de Filistijnen.
Al de functies die daarin gedeclareerd worden heb je al tot je beschikking met PDO.
en hoe kan ik het dan het beste oplossen dat ik die fatal error niet meer krijg wanneer ik me probeer in te loggen en wordt doorgestuurd naar login.php?
De oplossing is om zelf PHP te leren (vergeef me mijn cynisme op deze 1e kerstdag)

Reageren