PHP zufälligen datensatz aus Datenbank auslesen

Sarius87

Banned
Registriert
Mai 2016
Beiträge
888
hallo, ich will eine zufällige id aus einer datenbank auslesen, sodass ich von dieser zeile den code herbekomme ... habe dazu das script hier :

PHP:
<?php

$pdo=new PDO('mysql:host=localhost;dbname=XXX', 'XXX', 'XXX'); 
   
$sql=mysql_query("SELECT code FROM codes ORDER BY RAND() LIMIT 1"); 
while($row=mysql_fetch_object($sql)) 
{  
	echo "$row"; 
} 
?>

doch ich bekomme nichts angezeigt - aber wieso ? sehe keinen fehler...

2017-06-08_17.55.10.png
 
Hallo

Das Fetch Object ist falsch meiner Meinung nach, sollte so heissen:

while($row=mysql_fetch_array($sql))

Sollte heissen, Fetch_array nicht Fetch_Object :-) !

LG
 
immer noch nichts :/ und beim phpcodechecker sehe ich das :

Code:
Warning: There are 2 functions in your code that have been deprecated in the current version of PHP :
mysql_fetch_array()
mysql_query()
 
du benutzt zum einem das moderne pdo und zum anderen die alten mysql funktionen.. die mit aktuellen php versionen gar nicht gehen.. entscheide dich einfach
 
wie muss ich dass denn fürs aktuelle php anpassen ?
 
PHP:
<?php
 
$pdo = new PDO('mysql:host=localhost;dbname=XXX', 'XXX', 'XXX');
$stmt = $pdo->prepare('SELECT code FROM codes ORDER BY RAND() LIMIT 1');
$stmt->execute(); 

$result = $stmt->fetchAll();
var_dump($result);

versuch es so.. natürlich mit den richtigen datenbank daten.. statt den XXX

btw.. lies dir bitte den php styling guide durch.. bevor du nur eine einzige zeile schreibst https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-2-coding-style-guide.md
 
Zuletzt bearbeitet von einem Moderator:
ah danke aber wie bekomm ich da jetzt nur den code raus ? erhalte :

Code:
array(1) { [0]=> array(2) { ["gutscheincode"]=> string(14) "RGSP-DXZT-ZQYW" [0]=> string(14) "RGSP-DXZT-ZQYW" } }
 
Hallo

Sollte so heissen:

<?

echo $stmt
Code:
;

?>

Beherrsche leider nur die alte Programmierweise :-) !

LG
 
Hallo

Probiere einmal das (in alter Sprache):

PHP:
$pdo=new PDO('mysql:host=localhost;dbname=XXX', 'XXX', 'XXX'); 
   
$sql=mysql_query("SELECT code FROM codes ORDER BY RAND() LIMIT 1"); 

while($row=mysql_fetch_array($sql)) 
{  
	echo $sql[code];
}

Frage ist nun, hast Du nur 1 Datensatz in der Tabelle ? Vielleicht müssen es mehr als 1 Datensatz vorhanden sein, da evtl. das RAND nichts nutzt wenn er es sowieso nur ein Datensatz hat.

Versuche es nochmals.


LG
 
nope. müsste es nicht so gehen ? sehe nur leer ...

PHP:
$pdo=new PDO('mysql:host=localhost;dbname=XXX', 'XXX', 'XXX');

$stmt=$pdo->prepare('SELECT code FROM codes ORDER BY RAND() LIMIT 1');

foreach ($pdo->query($stmt) as $row) {
   $code=$row['code'];
}
echo $gutscheincode;
 
Sarius87 schrieb:
nope. müsste es nicht so gehen ? sehe nur leer ...

PHP:
$pdo=new PDO('mysql:host=localhost;dbname=XXX', 'XXX', 'XXX');

$stmt=$pdo->prepare('SELECT code FROM codes ORDER BY RAND() LIMIT 1');

foreach ($pdo->query($stmt) as $row) {
   $code=$row['code'];
}
echo $gutscheincode;

dein ernst? hab dir doch die lösung da geschrieben.. möchtest du komplett an die hand genommen werden?
hier mal das gleiche mit einem fetch statt einem fetchAll
PHP:
<?php
$pdo = new PDO('mysql:host=localhost;dbname=XXX', 'XXX', 'XXX');

$stmt = $pdo->prepare('SELECT code FROM codes ORDER BY RAND() LIMIT 1');
$stmt->execute();


$row = $pdo->fetch(PDO::FETCH_ASSOC);
$code = $row['code'];


echo $code;

sollte gehen.. aber versuch einfach mal die doku zu lesen..
http://php.net/manual/de/book.pdo.php
 
Zuletzt bearbeitet von einem Moderator:
damit erhalte ich beim aufrufen dann "X kann diese Anfrage momentan nicht verarbeiten."
 
ach echt ? meine mit dem X :
Code:
Domain.de  kann diese Anfrage momentan nicht verarbeiten.
kommt dann...
 
Herzlichen Glückwünsch, dein PHP-Script enthält einen Fehler und der Webserver reagiert mit Status 500 darauf. Wenn du nichtmal erfolgreich Copy & Pasten kannst, wird das hier wieder eine sehr zähe Angelegenheit.
 
Zurück
Oben