Как я могу случайно получить переменные из базы данных MySQL? (используя php с подключением dbo)

Мой вопрос ясно говорит об этом в заголовке. В любом случае, более сложный вопрос заключается в том, как я могу случайно показать переменную (например, имя) из базы данных mysql, используя php с подключением dbo в среде xampp.

Вот что я придумал с нуля: —

 <?php
$db = new PDO
('mysql:dbname=lab1;host=localhost;charset=utf8','root',
'');
$stmt = $db->prepare('SELECT * FROM countries');
?><head>
<meta charset="UTF-8"/>
<p>RANDOM!</p>
</head><body>
<?php
$stmt -> execute();
foreach($stmt as $row){
$something = array ($row['name'] . $row['name']);
}
$rand_keys = array_rand($something, 1);
echo $something[$rand_keys[0]] . "\n";
?>
</body>

Кажется, не работает, когда я пытаюсь открыть его (от localhost)

0

Решение

Исходя из вашего комментария «извините, я не смог прояснить свой вопрос, поэтому в основном у меня есть таблица в mysql с 4 столбцами, и на данный момент она имеет 2 введенных строки, теперь я хочу иметь возможность отображать, скажем, только 1 поле (случайным образом) как Я обновляю файл при открытии с localhost …«… вам нужно будет сделать составную рандомизацию 🙂

Начните с этого изменения в SQL, чтобы случайным образом просто взять одну строку (из всех столбцов):

SELECT * FROM countries ORDER BY RAND() LIMIT 1

Затем извлеките одну строку, а затем случайным образом выберите из доступных столбцов:

$stmt->execute();
$row = $stmt->fetch(PDO::FETCH_NUM);// PDO example, important to fetch by indexes, not associative names

echo $row[ rand(0,count($row)) ];

Это должно случайно вытянуть один столбец из случайно захваченного ряда.

0

Другие решения

Ты можешь использовать order by RAND() как другие предложили. Но я думаю, что то, как вы пытаетесь, не работает, потому что то, как вы добавляете элементы в массив. Как следующая строка:

$something = array ($row['name'] . $row['name']);

не помещает несколько элементов (например, названия стран) в массив. Он заменяет предыдущее значение объединенной строкой с тем же названием страны, повторенной дважды. (поэтому, если название страны — Афганистан, ваш массив всегда будет иметь один элемент AfghanistanAfghanistan

Измените свой код, как показано ниже:

<?php
$stmt -> execute();
$something = [];
foreach($stmt as $row){
$something[] = $row['name'];
}
$rand_keys = array_rand($something, 1);
echo $something[$rand_keys[0]] . "\n";
?>

Надеюсь, это сработает.

0

По вопросам рекламы [email protected]