PHP что не так с insert через PHP в MySQL?

cheremuxa

Известный
Автор темы
430
199
PHP:
<?php

$mysql = mysqli_connect('localhost', 'basename', 'password', 'basename');
if (!$mysql) exit('[CONNECTION ERROR]');

if ($stmt = $mysql->prepare('INSERT INTO `test` (`nickn`) VALUES (nickn)')) {
    $nickn = (isset($_POST['nickn']) ? strval($_POST['nickn']) : '$nickn');
    $stmt->bind_param('ss', $curS, $nickn);
    if ($stmt->execute()) {
        echo 'data received, inserting...';
        $stmt->close();
    } else {
        echo 'error';
        $stmt->close();
    }
}
?>

переменная nickn передается по POST - запросу из Lua скрипта
нужно записать текст, а оно записывает так:

т.е пустое значение, а должно записать:
nickname=ник из сампа
в консоли Moonloader'a:

DATA [ML] (script) test.lua: nickname=DieDoS
RESPONSE [ML] (script) test.lua: data received, inserting...
CODE [ML] (script) test.lua: 200
HEADERS [ML] (script) test.lua: table: 0x0ef05f10
STATUS [ML] (script) test.lua: HTTP/1.1 200 OK
 
Решение
Ты передаешь в prepare строку для форматирования, но не указываешь в ней параметры.
Вывод: пиши по скриптум что ты нихуя не понимаешь что происходит и просто взял пример из инетика.

PHP:
// ...
if ($stmt = $mysql->prepare('INSERT INTO `test` (`nickn`) VALUES (?)')) {
    $nickn = (isset($_POST['nickn']) ? strval($_POST['nickn']) : '$nickn');
    $stmt->bind_param('s', $nickn);
// ...

itsLegend

Фонд борьбы за жуков 🐞
Администратор
2,695
1,444
Ты передаешь в prepare строку для форматирования, но не указываешь в ней параметры.
Вывод: пиши по скриптум что ты нихуя не понимаешь что происходит и просто взял пример из инетика.

PHP:
// ...
if ($stmt = $mysql->prepare('INSERT INTO `test` (`nickn`) VALUES (?)')) {
    $nickn = (isset($_POST['nickn']) ? strval($_POST['nickn']) : '$nickn');
    $stmt->bind_param('s', $nickn);
// ...
 

cheremuxa

Известный
Автор темы
430
199
Ты передаешь в prepare строку для форматирования, но не указываешь в ней параметры.
Вывод: пиши по скриптум что ты нихуя не понимаешь что происходит и просто взял пример из инетика.

PHP:
// ...
if ($stmt = $mysql->prepare('INSERT INTO `test` (`nickn`) VALUES (?)')) {
    $nickn = (isset($_POST['nickn']) ? strval($_POST['nickn']) : '$nickn');
    $stmt->bind_param('s', $nickn);
// ...
дак это рабочий код чишо?
 
  • Злость
Реакции: itsLegend

Pakulichev

Software Developer & System Administrator
Друг
1,789
2,128
Я же уже несколько примеров работы с prepare дал, что за хуйня.
Если не можешь понять или прочитать в интернете (даже на русском уж инструкции есть), делай query напрямую.
PHP:
$mysql->query('INSERT INTO `users` (`login`, `password`) VALUES ("' . $login . '", "' . $pass . '")');
 

cheremuxa

Известный
Автор темы
430
199
дак это рабочий код чишо?
блять хули ты злишса я ищу кто мне даст наводку на что обратить внимание/че переделать
я сам нахуй не шарю в пхп мне он нужен на пару строк и все блять1.1
 

Pakulichev

Software Developer & System Administrator
Друг
1,789
2,128
блять хули ты злишса я ищу кто мне даст наводку на что обратить внимание/че переделать
я сам нахуй не шарю в пхп мне он нужен на пару строк и все блять1.1
Вы находитесь в разделе "Разработка" (само название уже должно выдавать смысл сего раздела).
Пожалуйста, не сорите здесь просьбами о написании какой-то программы (т.е. требуете уже готовый продукт). В некоторых подразделах имеется специальная тема с правилами для того или иного раздела. Если для раздела доступны префиксы, то вставляйте их не как попало или не ставьте вовсе.
Публикуя какой-либо код, добавляйте его через ББ-код, который можно найти в панели редактора или ввести вручную, более подробно здесь: threads/18663
 

cheremuxa

Известный
Автор темы
430
199
Я же уже несколько примеров работы с prepare дал, что за хуйня.
Если не можешь понять или прочитать в интернете (даже на русском уж инструкции есть), делай query напрямую.
PHP:
$mysql->query('INSERT INTO `users` (`login`, `password`) VALUES ("' . $login . '", "' . $pass . '")');
так бы сразу)
на что обратить внимание/че переделать
 

Pakulichev

Software Developer & System Administrator
Друг
1,789
2,128
так бы сразу)

на что обратить внимание/че переделать
На то, что это АБСОЛЮТНО НЕБЕЗОПАСНЫЙ СПОСОБ, ТВОЮ БАЗУ ВЗЛОМАЮТ И СОЖГУТ, если так передавать данные.
 

Pakulichev

Software Developer & System Administrator
Друг
1,789
2,128
да там ничего важного нету в этой базе ебучей
Тогда всё отлично, в первые скобки просто подставляешь названия столбцов в таблице, а во вторые переменные, из которых будем заполнять базу 🤘
 

cheremuxa

Известный
Автор темы
430
199
Тогда всё отлично, в первые скобки просто подставляешь названия столбцов в таблице, а во вторые переменные, из которых будем заполнять базу 🤘
http://prntscr.com/qivk35 - ('INSERT INTO `test` (`nickn`)
http://prntscr.com/qivko0 - VALUES ("' . $nickn . '")'
и получится:
if ($stmt = $mysql->query('INSERT INTO `test` (`nickn`) VALUES ("' . $nickn . '")'); {
верно?
 

Pakulichev

Software Developer & System Administrator
Друг
1,789
2,128