Для L oop не работает с массивом в mysql php - PullRequest
0 голосов
/ 23 апреля 2020

Я получаю код ошибки здесь, в результате код отправляет ошибку.

$coode = '111,222,333';

$rollnum = explode(",", $coode);
for($x = 0; $x < count($rollnum); $x++){
  $products = $db->query("SELECT name FROM studentstb WHERE roll_no=".$rollnum[$x]."");
                       while($row = $products->fetch_assoc()){
                          $stdname =$row['name'];
                       }

}
echo($stdname);

и я хочу, чтобы результат был показан как tolu, tulu, tala Я хочу получить эти значения в переменную , взорвать его, проверить базу данных, чтобы получить их имена, а затем отобразить их.

Ответы [ 3 ]

0 голосов
/ 24 апреля 2020

Я вижу две проблемы: первая - N + 1 запросов, вторая - в строке $stdname = $row['name'];

Решение

$codes = '1,2,3';

$sql = "SELECT name FROM users WHERE id IN ({$codes})";
$result = $mysqli -> query($sql);
$namesArr = $result->fetch_all(MYSQLI_ASSOC);

$updatedNamesArr = array_map(function ($name){
    return $name['name'];
}, $namesArr);

var_dump(implode(',', $updatedNamesArr));

Вывод

"Dmitry,Raf,Api"
0 голосов
/ 24 апреля 2020

Теперь, работая, я проигнорировал в запросе одну кавычку

 $rollnum = explode(',', $coode);
  for($x = 0; $x < count($rollnum); $x++){
    $products = $db->query("SELECT name FROM studentstb WHERE roll_no='".$rollnum[$x]."'");
    while($row = $products->fetch_assoc()){
     $stdname[$x] =$row['name'];
    }

}

, затем отобразил ее, используя

foreach ($stdname as $a){
        echo $a;
0 голосов
/ 23 апреля 2020

Метод fetch_asso c () не должен быть определен для вашего объекта PDOStatement $ products , если вы используете PDO драйвер, но он определен для MySQLi.

Проверьте Список методов PDOStatement здесь и те для MySQLi здесь.

С другой стороны ваша переменная $ stdname должен быть массивом, в который вы добавляете три значения из запроса. Затем вы должны адаптировать свой контент while l oop следующим образом:

while($row = $products->fetch()){
//get the names in an array
$stdname[$x] = $row['name'];
}

И, наконец, сделать al oop для отображения имен по вашему усмотрению.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...