Я изучаю PHP/MySQL во время работы над веб-приложением. Часть этого приложения требует повторения произвольного изображения из каталога изображений под названием «htdocs/full». База данных поддерживает путь к каждому изображению в столбце «image_path» в дополнение к столбцам для «first_name» «last_name».Как я могу получить случайное изображение из MySQL с PHP?
Я могу заставить его вызвать случайную строку из базы данных, и я могу заставить ее отображать литеральные данные из столбцов «first_name» и «last_name». Но я изо всех сил стараюсь, чтобы он прошел путь из столбца «image_path» и превратил его в образ, а не в литерал.
Я экспериментировал с несколькими методами за последние 24 часа, но большинство всего остального, что я видел в Stack и Google, - это вытащить изображение прямо из каталога, не используя строку базы данных (которая необходимо из-за соответствующих «first_name» и «last_name»).
Вот то, что я до сих пор (хотя у меня есть много различных вариантов, это я думаю, что это ближе я пришел):
<?php
$username="root";$password="*********";$database="offenders";
mysql_connect('localhost',$username,$password);
mysql_select_db($database) or die("Unable to select database");
$sSQLQuery = "SELECT image_path FROM offenders ORDER BY RAND() LIMIT 1";
$aResult = mysql_query($sSQLQuery);
WHILE($aRow = mysql_fetch_array($aResult)):
{
header("Content-Type:image/jpeg");
echo "<img src='php/imgView.php?imgId=".$aRow['image_path']."' />";
}
ENDWHILE;
?>
Он производит страницу с крошечным сломанным изображением в верхний левый. Я пробовал это, повторяя $ aRow, а также $ aRow ['image_path'], как показано выше, и ряд других настроек, которые, похоже, вызывают ошибку. Любые идеи, что я делаю неправильно?
Большое спасибо!
Обновленный код:
<?php
$username="root";$password="*******";$database="offenders";
mysql_connect('localhost',$username,$password);
mysql_select_db($database) or die("Unable to select database");
$src="full/";
//if you have any problem in the solution check this line,
//means weather you are providing right path for your files or not.
$sSQLQuery = "SELECT image_path FROM offenders ORDER BY RAND() LIMIT 1";
$aResult = mysql_query($sSQLQuery);
$aRow = mysql_fetch_array($aResult);
$file_path=$src.$aRow["image_path"];
//echo "<a href='php/imgView.php?imgId=".$aRow['image_path']."'>"."<img src=".$file_path." />"."</a>".'<br/>';
echo "<img src=".$file_path." />".'<br/>';
//echo "<img src=full/1b2ba2f9a8b8ee9c062b09767535d69bd954e125.jpg>";
/* if(isset($_GET['imgId']))
{
//i am query only first_name but you can add for field as you want
//and i also used $_get['imgId']; in the query which is not safe but you can make it for //secure.
$sSQLQuery = "SELECT first_name FROM offenders where image_path='".$_GET['imgId']."'";
$aResult = mysql_query($sSQLQuery);
WHILE($aRow = mysql_fetch_array($aResult)):
{
echo $aRow['first_name'];
}
ENDWHILE;
}
*/
?>
что вы видите при просмотре источника HTML генерируется из веб-браузера? – iWantSimpleLife
Ack. Добавлены соответствующие теги:
Ok. С вашего источника PHP кажется правильным. Я думаю, вы должны проверить свой imgView.php tp, чтобы он правильно отправлял данные изображения. – iWantSimpleLife