UPDATE или INSERT, если пустые поля в уникальной строке?

62
8

Должен быть более простой способ запросить таблицу и ЕСЛИ строка имеет DATA, затем UPDATE, ELSE INSERT В таблицу. В отдельности они отлично работают для ОБНОВЛЕНИЯ или ВСТАВКИ, но вместе они продолжают вставлять другую строку. Я хочу сохранить только одну строку на уникальный идентификатор. Я ужасен в заявлениях IF.

$result = mysql_query($query);
$row= mysql_numrows($result);

if( isset($row) AND $row > 0 ) //probably could use isset here or empty
{
$sql= " Update afillInfo
JOIN actorsInfo ON actorsInfo.id = afillInfo.id_actor
SET afillChoice = '$afillChoice',
agency = '$agency',
agentPhone = '$agentPhone'
WHERE email = '$_SESSION[email]'";

if (!mysqli_query($sql))
{
die('Error: ' . mysqli_error($sql));
}
}
else
{
$sql = "INSERT INTO afillInfo
(agency, agentPhone, afillChoice, id_actor)
VALUES
('$_POST[agency]','$_POST[agentPhone]','$_POST[afillChoice]'),
( select id FROM actorsInfo WHERE email = '$_SESSION[email]')
)";

if (!mysqli_query($sql))
{
die('Error: ' . mysqli_error($sql));
}
}

спросил(а) 2021-01-19T20:21:10+03:00 2 месяца, 3 недели назад
1
Решение
75

$query = "select count(*) as count .... rest of the query"
$result = mysql_query($query);
$data = mysql_fetch_assoc($result);

if($data['count'] > 0)
{
$sql= "Update afillInfo join actorsInfo
ON actorsInfo.id = afillInfo.id_actor
SET afillChoice = '$afillChoice',
agency = '$agency',
agentPhone = '$agentPhone'
WHERE email = '$_SESSION[email]'";

if (!mysqli_query($sql))
{
die('Error: ' . mysqli_error($sql));
}
}
else{

$sql="INSERT INTO afillInfo (agency, agentPhone, afillChoice, id_actor)
VALUES
('$_POST[agency]','$_POST[agentPhone]','$_POST[afillChoice]',
( select id FROM actorsInfo WHERE email = '$_SESSION[email]'))";

if (!mysqli_query($sql))
{
die('Error: ' . mysqli_error($sql));
}
}

ответил(а) 2021-01-19T20:21:10+03:00 2 месяца, 3 недели назад
45

Попробуйте это, существует проблема с функцией mysql_num_rows и проверьте, что $num_rows вернется к вам.

$link = mysql_connect("localhost", "mysql_user", "mysql_password");
mysql_select_db("database", $link);

$result = mysql_query("SELECT * FROM table1", $link);
$num_rows = mysql_num_rows($result);

echo "$num_rows Rows\n";

ответил(а) 2021-01-19T20:21:10+03:00 2 месяца, 3 недели назад
44

Вставить в afillInfo (агентство, агентPhone, afillChoice, id_actor) VALUES ('$ _POST [агентство]', '$ _ POST [агентPhone]', '$ _ POST [afillChoice]', (выберите id FROM actorsInfo WHERE email = '$ _SESSION [ Эл. адрес]'))

агент дублирования ключевых слов = значения (агентство), агентPhone = значения (агентPhone), afillChoice = значения (afillChoice), id_actor = values (id_actor)

ответил(а) 2021-01-19T20:21:10+03:00 2 месяца, 3 недели назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема