query maken

Status
Niet open voor verdere reacties.

softvieuw

Gebruiker
Lid geworden
15 mrt 2013
Berichten
29
beste,

ik heb in de function.php het volgende staan:

PHP:
function query($actie, $tabel){
$sql = "$actie * FROM $tabel";
$result = $mysqli -> query($sql);
echo $result;
}

ik roep hem op de volgende manier aan:

PHP:
query("SELECT","marticj89_website");


en dat werkt niet...
hij geeft deze error:
Fatal error: Call to a member function query() on a non-object in /home/marticj89/domains/

weet iemand hoe ik dit oplos? :$

want met bijv. dit werkt het wel:

PHP:
function makeheader($title, $css){
$header =<<<HEADER
<!DOCTYPE html>
<html>
<head>
<title>$title</title>
<link rel='stylesheet' href='$css' type='text/css'/>
</head>
<body>
HEADER;
echo $header;
}


mvg softvieuw
 
Zoiets misschien?

Code:
$query = 'SELECT '.$Actie.' * FROM '.$tabel.' ';
 
Wat is $mysqli? Je roept daarvan de methode "query" aan, maar ik zie nergens waar je $mysqli aanmaakt. Je zal nog
PHP:
$mysqli = new mysqli('localhost', 'my_user', 'my_password', 'my_db');
neer moeten zetten (waarbij je 'my_user', 'my_password' en 'my_db' vervangt door de juiste waardes).

Als je dit al wel ergens hebt staan moet je rekening houden met de variable scope. Als je een variabele in de global scope (niet in een functie) definieert kan je die variabele niet zomaar gebruiken binnen een functie. In dat geval moet je de variabele $mysqli meegeven aan je eigen functie 'query' of gebruik maken van het 'global' keyword. In dat geval zet je vooraan je 'query' functie
PHP:
global $msyqli;
 
bedankt voor je reactie,

ik heb nu dit:

PHP:
function connect($server, $user, $database){
$mysql = new mysqli("$server", "$user","*******", "$database");
//checkc onnectie
if ($mysqli -> connect_errno){
printf("verbinding mislukt: %s\n", $mysqli -> connect_errno);
}
return $mysql;
}
function query($actie, $tabel){
global $mysql;
$sql = 'SELECT '.$Actie.' * FROM '.$tabel.' ';
$result = $mysqli -> query($sql);
echo $result;
}

en nog steeds die error... of bedoel je dat niet met die scope? :$

mvg softviuw
 
PHP:
function connect($server, $user, $database){
$mysql = new mysqli("$server", "$user","*******", "$database");
//checkc onnectie
if ($mysqli -> connect_errno){
printf("verbinding mislukt: %s\n", $mysqli -> connect_errno);
}
return $mysql;
}
function query($actie, $tabel){
global $mysql;
$sql = 'SELECT '.$Actie.' * FROM '.$tabel.' ';
$result = $mysqli -> query($sql);
echo $result;
}
Kijk nog eens goed naar de variabelen.
Je begint met $mysql voor de new mysqli(), maar roept het vervolgens in de if-statement en $result aan als $mysqli.

En hoe zit het eigenlijk met dat '->', hoort dat niet allemaal 'aan elkaar'? Dus; $mysqli->query in plaats van $mysqli -> query()?
 
bedankt, ik hheb de variablen aangepast...

maar nog geeft hij die error :(

en dat zonder spatie levert nog steeds error op :$
 
Je hebt nu een functie 'connect' gemaakt waarin je, als het goed is, de variabele $mysqli definieert. Deze functie moet je dus ergens aanroepen (ik zie het niet in je code, maar het kan zijn dat je het ergens anders aanroept). Ook hier zit je met de variable scope. De variabele $mysqli bestaat alleen in de functie 'connect'.

Als je buiten een functie (dus in de global scope) de variabele al definieert
PHP:
$mysqli = NULL;
Dan kun je daarna in de functie 'connect' gebruik maken van 'global $mysqli;' en verbinding maken. In de functie 'query' kan je dan bij die variabele met 'global' zoals je nu al doet. Je moet er wel aan denken dat je eenmalig 'connect();' aanroept voor je je query-functie aanroept.
 
ik heb het zo als de code van koekje^^ of zet ik het dan op verkeerde plek?
of moet ik connect() binen query functie aanroepen?

volg het niet helemaal :$
 
Hoe je pagina er ongeveer uit moet zien:
PHP:
<?php
$mysqli = NULL;  // hier maken we de variabele aan in de global scope

function connect($server, $user, $database){
  global mysqli;  // hier geven we aan dat we de variabele van de global scope willen gebruiken
  $mysqli = new mysqli("$server", "$user","*******", "$database");
  //checkc onnectie
  if ($mysqli -> connect_errno){
    printf("verbinding mislukt: %s\n", $mysqli -> connect_errno);
  }
}

function query($actie, $tabel){
  global $mysqli;
  $sql = 'SELECT '.$Actie.' * FROM '.$tabel.' ';
  $result = $mysqli -> query($sql);  // hier voeren we de query uit
  while($row = $mysqli -> fetch_assoc()) {  // regel voor regel de resultaten ophalen
    print_r($row);  // ik weet niet welke velden je hebt in je database, daarom gebruik in hier print_r
  }
}

// hier roepen we de functie connect aan zodat er verbinding wordt gemaakt met de database
// VUL HIER NOG DE JUISTE $server, $user en $database IN
connect($server, $user, $database); 

query("SELECT","marticj89_website");
?>
Niet getest, maar zo zou het moeten werken.

De spaties rondom de '->' vind ik wat minder netjes, maar het mag wel.
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan