PHP & amp; Синтаксис Mysql неверный?

У меня возникла проблема с этим, вообще не работает, когда информация представлена, я считаю, что у меня неправильный синтаксис.

 if ($_POST['note'] != $player->note_text) {
$message = 'Admin '.$user.' has added the note ('.$_POST['note'].') to '.$player->name.'('.$pid.')';
logIt($user, $message, $dbcon);
$note = $_POST['note'];
$note = '"'.$note.'"';
$UpdateN = "INSERT INTO notes (uid, staff_name, name, alias, note_text, warning) VALUES ('$_POST[hidden]', '$user', '$player->name', '$player->aliases', '$note','$_POST[warn]')";
$UpdateN2 = "INSERT INTO players WHERE `playerid` = $_POST[hidden] (warning) VALUES ('$_POST[warn]')";
mysqli_query($dbcon, $UpdateN, $UpdateN2);

Новая строка, которую я добавил, которая, кажется, сломала это ‘$ UpdateN2’.
Я не уверен, что новая строка нарушила это утверждение, так как я новичок в PHP и mysqli любые указатели на форумы или сайты, которые я могу изучить и понять это более детально, я был бы признателен.

Изменить: С тех пор я перешел от использования MySQL в PDO, я настоятельно рекомендую всем, кто хочет начать использовать команды MYSQL с PHP, чтобы посмотреть на это: http://wiki.hashphp.org/PDO_Tutorial_for_MySQL_Developers

Я начал читать это и проверять вещи, я нахожу это намного проще, но также это выглядит намного чище и понятнее, когда читаешь его обратно через несколько дней.

-1

Решение

В соответствии с процедурным стилем mysqli в оригинале, с использованием подготовленных операторов с заполнителями связывания, что-то вроде этого:

   $UpdateN = 'INSERT INTO notes (uid, staff_name, name, alias, note_text, warning)'
. ' VALUES ( ?, ? , ? , ? , ? , ? )';

$UpdateN2 = 'UPDATE players SET warning = ? WHERE playerid = ? ';

if( $sth = mysqli_prepare($dbcon,$UpdateN) ) {
mysqli_stmt_bind_param($sth,'ssssss'
,$_POST['hidden']
,$user
,$player->name
,$player->aliases
,$_POST['note']
,$_POST['warn']
);
if( mysqli_stmt_execute($sth) ) {
// statement execution successful
} else {
printf("Error: %s\n",mysqli_stmt_error($sth));
}
} else {
printf("Error: %s\n",mysqli_error($dbcon));
}

if( $sth2 = mysqli_prepare($dbcon,$UpdateN2) ) {
mysqli_stmt_bind_param($sth2,'ss'
,$_POST['warn']
,$_POST['hidden']
);
if( mysqli_stmt_execute($sth2) ) {
// statement execution successful
} else {
printf("Error: %s\n",mysqli_stmt_error($sth2));
}
} else {
printf("Error: %s\n",mysqli_error($dbcon));
}
1

Другие решения

Если бы это был я, я бы просто сделал два отдельных вызова mysqli_query, по одному для каждого из ваших отдельных запросов. Исторически PHP очень осторожно разрешал множественные запросы в одном вызове функции из-за возможных уязвимостей внедрения SQL.

На связанной ноте, вам нужно санировать ваш вклад. $ _POST никогда и никогда не должен появляться непосредственно в строке запроса mysql, потому что ваши данные поста могут быть что-то вроде ‘) «; DROP TABLE users;’.

Наконец, вы используете предложение WHERE для вставки. Это, вероятно, нарушает ваш запрос. Вам нужно потратить пару дней и изучить, как и почему это нарушает ваш запрос, и как и почему писать правильные SQL-запросы. Это повысит ценность вашей компании, поскольку вероятность того, что ваша компания столкнется с катастрофическим нарушением данных, будет ниже, и это повысит вашу ценность, потому что вы будете лучшим SQL-кодером.

Изменить: и в то время, когда мне потребовалось, чтобы написать это, три разных человека высказали каждый из этих пунктов. ЛОЛ.

1

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector