new mysqli mit chr($i) zu new pdo

Loddar1

Erfahrenes Mitglied
Hallo liebe Gemeinde,
Ich habe mal wieder totale unkenntnis schon by new mysqli:
Mein Code der funktioniert aber ist nicht wirklich gut geschrieben
PHP:
$con = new mysqli($_hostname,$_username,$_password,$_database) or die ();

$sel = isset($_GET['sel']) ? $_GET['sel'] : '0';

$anuser='<select method="post" name="an">';

for ($i = 97; $i <= 122; $i++)
{
   
   $stmt = $con->prepare("SELECT id,username FROM tabelle WHERE username LIKE '".chr($i)."%' ORDER BY username ASC");

   $stmt->execute();
 
   $result = $stmt->get_result();
   $anuser.='<optgroup label="'.locpas(chr($i)).'">';
 
while ($row = $result->fetch_assoc())
        {
            $sel = "";
            if($vonid==$row['id'])$sel=' selected';
            $anuser.='<option value="'.$row['id'].'" '.$sel.'>'.$row['username'].'</option>';
        }
$anuser.='</optgroup>';
}
$anuser.='</select>';
Das mit dem LIKE '".chr($i)."%' ist wohl nicht richtig
Ich weiss aber nicht weiter denn mit pdo funktioniert das garnicht.

für pdo habe ich das bisher so:
PHP:
$pdo = new PDO("mysql:host=" . DB_SERVER . ";dbname=" . DB_NAME, DB_USERNAME, DB_PASSWORD);

$sel = isset($_GET['sel']) ? $_GET['sel'] : '0';

$anuser='<select method="post" name="an">';
for ($i = 97; $i <= 122; $i++)
{
  $stmt = $pdo->prepare("SELECT id,username FROM tabelle WHERE username LIKE '".chr($i)."%' ORDER BY username ASC");
    $stmt->execute();
    $anuser.='<optgroup label="'.chr($i).'">';
        while ($lo = $stmt->fetch())
        {
        $sel = "";
if($vonid==$userID)$sel=' selected';
$anuser.='<option value="'.$lo['userid'].'" '.$sel.'>'.$lo['username'].'</option>';
}
$anuser.='</optgroup>';
}
$anuser.='</select>';

ich denke das das nicht funktionieren mit pdo an LIKE '".chr($i)."%' liegt,
weis jemand wie das richtig geschrieben wird?

wie es ohne '".chr($i)."%' geschrieben wird weiss ich.

Danke im vorraus Loddar1
 
Zuletzt bearbeitet:
Und die Usernamen BEGINNEN bei dir alle mit KLEIN-Buchstaben?
wie es ohne '".chr($i)."%' geschrieben wird weiss ich.
Und wenn du das mal hier posten würdest?

PHP:
$anuser.='<option value="'.$lo['userid'].'" '.$sel.'>'.$lo['username'].'</option>';
Es gibt kein Feld namens "userid" in deinem Resultset.......
 
Hallo liebe Gemeinde,
Ich habe mal wieder totale unkenntnis schon by new mysqli:
Mein Code der funktioniert aber ist nicht wirklich gut geschrieben
PHP:
$con = new mysqli($_hostname,$_username,$_password,$_database) or die ();

$sel = isset($_GET['sel']) ? $_GET['sel'] : '0';

$anuser='<select method="post" name="an">';

for ($i = 97; $i <= 122; $i++)
{
  
   $stmt = $con->prepare("SELECT id,username FROM tabelle WHERE username LIKE '".chr($i)."%' ORDER BY username ASC");

   $stmt->execute();
 
   $result = $stmt->get_result();
   $anuser.='<optgroup label="'.locpas(chr($i)).'">';
 
while ($row = $result->fetch_assoc())
        {
            $sel = "";
            if($vonid==$row['id'])$sel=' selected';
            $anuser.='<option value="'.$row['id'].'" '.$sel.'>'.$row['username'].'</option>';
        }
$anuser.='</optgroup>';
}
$anuser.='</select>';
Das mit dem LIKE '".chr($i)."%' ist wohl nicht richtig
Ich weiss aber nicht weiter denn mit pdo funktioniert das garnicht.

für pdo habe ich das bisher so:
PHP:
$pdo = new PDO("mysql:host=" . DB_SERVER . ";dbname=" . DB_NAME, DB_USERNAME, DB_PASSWORD);

$sel = isset($_GET['sel']) ? $_GET['sel'] : '0';

$anuser='<select method="post" name="an">';
for ($i = 97; $i <= 122; $i++)
{
  $stmt = $pdo->prepare("SELECT id,username FROM tabelle WHERE username LIKE '".chr($i)."%' ORDER BY username ASC");
    $stmt->execute();
    $anuser.='<optgroup label="'.chr($i).'">';
        while ($lo = $stmt->fetch())
        {
        $sel = "";
if($vonid==$userID)$sel=' selected';
$anuser.='<option value="'.$lo['userid'].'" '.$sel.'>'.$lo['username'].'</option>';
}
$anuser.='</optgroup>';
}
$anuser.='</select>';

ich denke das das nicht funktionieren mit pdo an LIKE '".chr($i)."%' liegt,
weis jemand wie das richtig geschrieben wird?

wie es ohne '".chr($i)."%' geschrieben wird weiss ich.

Danke im vorraus Loddar1
Habe die richtige schreibweise gefunden und es funktioniert!

PHP:
$pdo = new PDO("mysql:host=" . DB_SERVER . ";dbname=" . DB_NAME, DB_USERNAME, DB_PASSWORD);

$sel = isset($_GET['sel']) ? $_GET['sel'] : '0';

$anuser='<select method="post" name="an">';
for ($i = 97; $i <= 122; $i++)
{
  $taba = chr($i).'%';
  $stmt = $pdo->prepare("SELECT id,username FROM tabelle WHERE username LIKE :taba ORDER BY username ASC");
    $stmt->execute();
    $anuser.='<optgroup label="'.chr($i).'">';
        while ($lo = $stmt->fetch())
        {
        $sel = "";
if($vonid==$userID)$sel=' selected';
$anuser.='<option value="'.$lo['userid'].'" '.$sel.'>'.$lo['username'].'</option>';
}
$anuser.='</optgroup>';
}
$anuser.='</select>';
 
Hallo Zwoni
tut mir leid mit den schreibfehlern wollte das beides gleich aussieht.
Hier ist jetzt der funktionierende Code:
PHP:
$pdo = new PDO("mysql:host=" . DB_SERVER . ";dbname=" . DB_NAME, DB_USERNAME, DB_PASSWORD);

$userID = $sessin['id'];

$sel = isset($_GET['sel']) ? $_GET['sel'] : '0';

$anuser='<select method="post" name="an">';
for ($i = 97; $i <= 122; $i++)
{
  $taba = chr($i).'%';
 
  $stmt = $pdo->prepare("SELECT id,username FROM tabelle WHERE username LIKE :taba ORDER BY username ASC");
    $stmt->bindParam(':taba', $taba, PDO::PARAM_STR);
    $stmt->execute();
    $anuser.='<optgroup label="'.chr($i).'">';
        while ($row = $stmt->fetch())
        {
        $sel = "";
if($vonid==$userID)$sel=' selected';
$anuser.='<option value="'.$row['id'].'" '.$sel.'>'.$row['username'].'</option>';
}
$anuser.='</optgroup>';
}
$anuser.='</select>';

Das bindParam hat gefehlt

Sorry das ich schreibfehler hatte aber ich hatte das chr($i).'%'; falsch übernommen.
Es ist mir erst nach dem Posten aufgeallen.
 
Zurück