Я знаю, что Mysql не рекомендуется по очевидным причинам, но я не решил продолжать его использовать.
<?php
if (!mysql_select_db('dobhost_databaseexamplename', $con)) {
echo 'Could not select database';
exit;
}
$sql = ("SELECT * FROM sections WHERE recid = '" .$page. "'");
$result = mysql_query($sql, $con);
if (!$result) {
echo "DB Error, could not query the database\n";
echo 'MySQL Error: ' . mysql_error();
exit;
}
while ($row = mysql_fetch_assoc($result)) {
?>
<title>Carpets - <?php echo $row['title'];?></title>
<meta name="description" content="<?php echo $row['descr'];?>" />
<meta name="keywords" content="<?php echo $row['keywords'];?>" />
<?php
}
mysql_free_result($result);
?>
этот код отлично работает как включение, его соединение с базой данных установлено в другом месте, но все работает нормально, единственная проблема заключается в том, что, когда я включаю его в заголовок шаблона, он разбивает весь код php под ним — есть ли способ изолировать мой запрос и php эхо, чтобы они не влияли на содержание ниже?
Большое спасибо!
Оберните его в функцию, возможно, вы определяете переменные, которые позже будут использованы в другом скрипте.
Также цикл может быть плохой идеей, вы можете получить несколько титровальных элементов.
echo 'Could not select database';
exit;
Это тоже плохо, просто сгенерируйте исключение так: throw new \Exception('Could not select database');
<?php
function getMetaTags($pageId) {
global $con;
if (!mysql_select_db('dobhost_databaseexamplename', $con)) {
throw \Exception('Error selecting db');
}
$sql = (sprintf("SELECT * FROM sections WHERE recid = %d", $pageId));
$result = mysql_query($sql, $con);
if (!$result) {
throw new \Exception(mysql_error(), mysql_errno());
}
if(!$row = mysql_fetch_assoc($result)) {
throw new \Exception(sprintf('Page with id %d not found', $pageId);
}
return sprintf('<title>Carpets - %s</title>
<meta name="description" content="%s" />
<meta name="keywords" content="%s" />', $row['title'], $row['descr'], $row['keywords']);
}
}
Других решений пока нет …