Если вы загружаете содержимое файла, вы не должны размещать HTML-элементы вокруг него.
Вы также можете отправлять только одно изображение за раз, поэтому нет смысла зацикливаться.
<?php
include("sql.php");
//$sql = "SELECT * FROM filesdb WHERE fileid = 5";
$id = Если вы загружаете содержимое файла, вы не должны размещать HTML-элементы вокруг него.
Вы также можете отправлять только одно изображение за раз, поэтому нет смысла зацикливаться.
[110]GET['id'];
// do some validation here to ensure id is safe
$sql = "SELECT dbforfile FROM filesdb WHERE fileid =$id";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
header('content-type: image/jpeg');
$row = $result->fetch_assoc();
echo $row['dbforfile'];
}
Я использовал бы набор:: lower_bound для нахождения соответствия или большего значения затем постепенно уменьшите итератор для проверки следующего нижнего значения. Необходимо использовать станд.:: набор, а не станд.:: карта, так как Ваш ключ встраивается в объект - необходимо будет обеспечить функтор, который сравнивает участников метки времени.
struct TimestampCompare
{
bool operator()(const STimestampedData & left, const STimestampedData & right) const
{
return left.m_timestamp < right.m_timestamp;
}
};
typedef std::set<STimestampedData,TimestampCompare> TimestampedDataSet;
TimestampedDataSet::iterator FindClosest(TimestampedDataSet & data, STimestampedData & searchkey)
{
if (data.empty())
return data.end();
TimestampedDataSet::iterator upper = data.lower_bound(searchkey);
if (upper == data.end())
return --upper;
if (upper == data.begin() || upper->m_timestamp == searchkey.m_timestamp)
return upper;
TimestampedDataSet::iterator lower = upper;
--lower;
if ((searchkey.m_timestamp - lower->m_timestamp) < (upper->m_timestamp - searchkey.m_timestamp))
return lower;
return upper;
}
Я использовал бы equal_range также для такой вещи.
При использовании вида () каждый раз на векторе, могло бы быть лучше использовать карту (или установить), поскольку это всегда сортируется автоматически, и используйте участника equal_range
Но это зависит от сумма вставок / запросы / объем данных. (хотя для чего-то, что всегда должно сортироваться, когда я запрашиваю, карта была бы моим предпочтительным вариантом, и я только использовал бы вектор, если бы было очень серьезное основание),
В зависимости от того, каково Ваше использование, Вы могли сделать простой линейный поиск вместо вида. Придумайте функцию "расстояния", цикл посредством отслеживания лучшего соответствия до сих пор и его расстояние. Когда Вы находите лучшее соответствие, забываете предыдущее и сохраняете новое и его расстояние. Когда Вы циклично выполнились через все, у Вас есть свое соответствие.
Это удается, чтобы быть O (N*S), где N является количеством объектов в векторе, и S является количеством поисков.
Вашим текущим путем является O ((N+S)*LogN), который больше, если количество поисков является небольшим и ограничено. Иначе вид / двоичный поиск лучше.