#php #html #mysql
#php #HTML #mysql
Вопрос:
Я должен вставить в partnerCode
ячейку, где введенное пользователем значение равно randomfield
, и оно должно быть вставлено точно в противоположную ячейку, где randomfield=partnerCode
Например: Введенное значение равно 66666, оно существует в randomfield
и вставлено в противоположную ячейку
ID randomfield partnerCode
------- ------------- -------------
| 1 | 555555 | null |
------- ------------- -------------
| 2 | 666666 | 666666 |
------- ------------- -------------
| 3 | 777777 | null |
------- ------------- -------------
HTML-код формы:
<form name="Partner" action="../../pages/examples/profile.php" method="POST" >
<input class="random-but" name="partnerCode" value="<?php echo $partnerCode; ?>">
<input class="reload-but" type="submit" value=" >>>" name="partnerCode">
</form>
Здесь код вставки, но работает некорректно
if (isset($_POST['partnerCode'])) {
// receive all input values from the form
$partnerCode= mysqli_real_escape_string($db, $_POST['partnerCode']);
$user_check_query = "SELECT * FROM refer WHERE partnerCode='$partnerCode' LIMIT 1";
$result = mysqli_query($db, $user_check_query);
$user = mysqli_fetch_assoc($result);
if (count($errors) == 0) {
$query = "INSERT INTO refer (randomfield, partnerCode)
VALUES('$randomfield', '$partnerCode') where
randomfield='$partnerCode' ";
mysqli_query($db, $query);
}
Комментарии:
1.
INSERT
не принимаетWHERE
предложение. Вы ищетеUPDATE
2. Вам следует выполнить некоторую проверку ошибок (в дополнение к обзору некоторых основ MySQL). за
INSERT INTO
не должно следоватьWHERE
.3. @Patrick Вопрос: Да! Вот почему я ищу решение
Ответ №1:
Вместо insert Вы должны использовать UPDATE
update refer
set partnerCode = '$partnerCode'
where randomfield='$partnerCode'
в любом случае вместо php var в sql и mysqli_real_escape_string вы должны взглянуть на драйвер вашей БД для подготовленных инструкций и параметров привязки
Комментарии:
1. «в любом случае вам не следует использовать php в sql, вы подвергаетесь риску sqlijection .. » Что следует использовать альтернативно? Есть какой-нибудь источник, где я могу прочитать об этом?
2. вместо php var и mysqli_real_escape_string l вам следует взглянуть на подготовленные инструкции и параметры привязки php.net/manual/en/mysqli.quickstart.prepared-statements.php (я вижу, вы использовали mysqli_real_escape_string, чтобы избежать проблемы .. но подготовленный оператор и параметр привязки более мощные)