Я использую этот код, чтобы проверить, действительно ли запись уже существует, но кажется, что запрос всегда возвращает true. Когда я использую тот же запрос в оболочке, он работает правильно. Имейте в виду, что foodname является Первичным ключом.EXISTS всегда возвращает истинный простой запрос
$query = "SELECT EXISTS (SELECT * FROM Food WHERE foodname = '$food_name')";
$result = pg_query($conn,$query) or die("Query could not be executed");
if($result)
{
echo 'food already exists: ';
echo $food_name;
printf("\n");
}
else
{
echo 'new food inserted';
printf("\n");
$query = "INSERT INTO food VALUES ('$food_name','$food_price','$food_date')";
$result = pg_query($conn,$query) or die("Query could not be executed");
}
ВОПРОС: Я изменил его «скачать скачать» сказал так же, как и он работает, как он также работает с Kettners ответ, но не СУЩЕСТВУЕТ быстрее для проверки, если запись уже существует по той причине, что он останавливается, когда его находит пару? Есть ли какой-либо запрос с использованием EXISTS, который может работать в этом случае? Thnx за помощь.
ANSWER: После прочтения всего, что вы, ребята, сказали следующее, что я выбрал для использования, он работает и также использует EXISTS.
$query = "SELECT 1 FROM food WHERE EXISTS (SELECT * FROM Food WHERE foodname = '$food_name')";
$result = pg_query($conn,$query) or die("Query could not be executed");
$row = pg_fetch_row($result);
if($row[0])
{
echo 'food already exists: ';
echo $food_name;
printf("\n");
}
else
{
echo 'new food inserted';
printf("\n");
$query = "INSERT INTO food VALUES ('$food_name','$food_price','$food_date')";
$result = pg_query($conn,$query) or die("Query could not be executed");
}
посмотреть на http://stackoverflow.com/questions/7471625/fastest-check-if-row-exists-in-postgresql –
Сначала проверить, что вывод идет в $ результат. если запрос работает успешно или сбой – Monty
Вы пробовали SELECT EXISTS (SELECT 1 FROM Food WHERE foodname = '$ food_name') ;? –