php проверить наличие записи в базе

user99

Постоялец
Регистрация
13 Янв 2008
Сообщения
141
Реакции
15
Добрый вечер!
Подскажите пожалуйста что делаю не так? Требуется по ID проверить наличие записи в базе

PHP:
<?php

$link = mysql_connect("localhost", "***", "***")
  or die ("Could not connect to MySQL");

mysql_select_db ("payment")
  or die ("Could not select database");


$query = "SELECT * FROM pay WHERE pay_id = 'test'";
$result = mysql_query ($query)
  or die ("Query failed");

$rows=$query->sql_numrows();
if ($rows==0)
{
echo "Платеж не найден";
}
else
{
echo "Платеж найден";
}

Ошибка Call to a member function sql_numrows() on string


И второй вопрос, подскажите пожалуйста как получить значение заключенное в (), например "Пополнение ЛС по договору (test1)", нужно комментарий отфильтровать и получить в переменную только test1. Спасибо.
 
Последнее редактирование модератором:
  • Заблокирован
  • #2
Спасибо, а еще подскажите пожалуйста по вопросу записи в БД.

$query = "INSERT INTO pay (pay_id, usr, summa)
VALUES ('$pay_id', '$usr', '$summa')";

Где в запросе ошибка?
Если не найдено то пробую сделать запись данных.
 
Идти напрямую - зло!
Есть 2 интересные конструкции, которые жрут меньше нагрузки чем SELECT + INSERT...

1) INSERT IGNORE INTO table … - ключевое слово IGNORE говорит, что если такая запись в базе уже есть - запрос просто пропускается и не вносит запись в базу.
2) INSERT INTO table ... ON DUPLICATE KEY UPDATE ... - эта штука ещё интереснее. Если записи нет - она добавляется, а вот если есть - обновляется.

Подробнее, например, тут: Для просмотра ссылки Войди или Зарегистрируйся ну или в гугле :)

Учитесь использовать SQL правильно...
 
$query = "INSERT IGNORE INTO pay (pay_id,usr,summa) VALUES(t,s,m)";
Вообще ничего не говорит. И в БД не добавляет и ошибки не выводит.
 
Выводишь этот запрос через var_dump на экран, после чего выполняешь через phpMyAdmin или Navicat (или подобное ПО) и смотришь что происходит.
 
Таблица pay поля pay_id usr summa

Через var_dump, вывел, скопировал, выполнил в Navicat, строка добавилась.
 
=> Что-то не так в самом коде... SQL запрос верен.
После mysql_query() ... добавь строку:
PHP:
echo mysql_errno($link) . ": " . mysql_error($link) . "\n";
Ну это так. на случай откровенного бреда...
 
Добавил, 0: Выводит.

Сам код:
$rows=mysql_num_rows($result);

if ($rows==0)
{
$query = "INSERT IGNORE INTO pay (pay_id,usr,summa) VALUES('t','s','300.00')";
}

Сделал вот так, заработало.

{
$query = "INSERT IGNORE INTO pay (pay_id,login,amount) VALUES('t','s','300.00')";
$result = mysql_query ($query);
}



Ранее было просто:
{
$query = "INSERT IGNORE INTO pay (pay_id,usr,summa) VALUES('t','s','300.00')";
}
 
Последнее редактирование:
Назад
Сверху