Подскажите как сделать проверку на существование записи в таблице MySql . Я пробовал вот так: Код (Text): $str_sql_query2 = "SELECT g_fcast FROM group_$_POST[group_id] WHERE g_fcast=$_POST[match_id]"; if (!$result1 = mysql_query($str_sql_query2, $db)){ $str_sql_insert = "INSERT INTO group_$_POST[group_id] SET g_fcast='$_POST[match_id]', g_fres='$_POST[answer]', g_fcomm='$_POST[answer_text]'"; mysql_query($str_sql_insert, $db); echo "новые данные в таблицу занесены"; } else { $str_sql_update1 = "UPDATE group_$_POST[group_id] SET g_fres='$_POST[answer]', g_fcomm='$_POST[answer_text]' WHERE g_fcast='$_POST[match_id]'"; mysql_query($str_sql_update1, $db); echo "данные в таблице group_$_POST[group_id] поменялись"; } В общем если нет записи в которой g_fcast=$_POST[match_id], то нужно создать новую, а если есть то поменять значения.
1. некорректное создание запросов. после объявления строки сделай её дамп и посмотри какие там на самом деле данные. 2. включи максимальный уровень вывода ошибок и включи вывод ошибок на экран - пусть пхп тебя ругает за кривой код а ты соответственно старайся писать всегда прямой код. 3. всегда будет считаться что запись существует до тех пор пока запрос не завершится ошибкой. потому что ты неправильно работаешь с субд. функция query() возвращает не ответ от базы данных с кортежами а ресурс на результат. даже нулевое кол-во строк - это результат. а результат это истина. а у тебя истина - признак существования строк. внимательно прочитай мануал по выбранному инструменту работы с субд. и да, сейчас прибегут мальчики которые будут говорить что mysql устарело и надо использовать mysqli или pdo - слушай их и соглашайся.
Тогда каким образом мне проверь запись на существавание? С цикле прогнать всю таблицу и сравнивать каждое значение? Мне что это будет не правильно
такое ощущение что ты голову не включаешь. вот этот вот прогон с прогоном всей таблицы - это дебильная идея. то что у тебя написано - выборка строки по условию - это правильная иделя но дебильная реализация. написано было тебе русским по белому пойти в мануал и подобрать правильную функцию для развития уже существующий у тебя реализации а не для изобретения бессмысленного и беспощадного костыля. или например можешь почитать листинг вот этого комментария (заранее сорри за сложночитаемый код - там перевод на язык местного клоуна) и подумать какого единственного фрагмента у тебя не хватает.
Я понял что использовать mysql_query в условии было глупо. Так как ты сказал результат будет true в случает правильного написания запроса. И поменял его на mysql_fetch_array . Но чтобы работало mysql_query перед условием тоже есть. Код для наглядности: Код (Text): $str_sql_query2 = "SELECT g_fcast FROM group_$_POST[group_id] WHERE g_fcast=$_POST[match_id]"; $result1 = mysql_query($str_sql_query2, $db); if (!mysql_fetch_array($result1)){ //если нет записи } else { //если есть запись }