Правила     Закладки     Карма    Календарь    Журналы    Помощь    Поиск    PDA    Чат   
        СМС-ки
   
Пейджер выключен!
 
Фильтр авторов:    показать 
  скрыть
  Ответ в темуСоздание новой темыСоздание опроса

> Не получается записать данные в таблицу.
StepCX75  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 7
Пользователь №: 42767
На форуме: 8 месяцев, 11 дней
Карма:




Всем привет. Уровень у меня мягко сказать начальный) Не судите строго. Дело такое, пишу простой скрипт для записи из формы методом POST данных в БД. код такой:


<?php

if ($_POST['ok'])
{

$name = $_POST['name'];
$pass = $_POST['pass'];
echo $name,$pass; // убедимся что переменные не пустые
$sql = "INSERT INTO `users` (`name`,`pass`) VALUES($name,$pass)";
if (mysqli_query($mysql,$sql)) {

echo 'запись произведена';

}

}


?>
и запись не производится. Переменные НЕ пустые, если вместо переменных в VALUES вписать абракадабру то она при нажатии на "ок" запишется в бд. Значит запрос не принимает переменные. Я видел в примерах КУЧУ разных вариантов написания переменных в VALUE . например: $sql = "INSERT INTO `users` (`name`,`pass`) VALUES($name,$pass)";

$sql = "INSERT INTO `users` (`name`,`pass`) VALUES(`$name`,`$pass`)";

$sql = "INSERT INTO `users` (`name`,`pass`) VALUES('".$name."','".$pass."')";

$sql = "INSERT INTO `users` (`name`,`pass`) VALUES('{$name}','{$pass}')";

Что это вообще? нафига то кавычки двойные, то одиночные, то значок ` , то скорбки блять фигурные, то точки!! Объясните пожалуйста мне чайнику как правильно делать, и в чем отличие способа написания переменных в value. у меня не работает никак.
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
DragonNoir  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 47
Пользователь №: 42691
На форуме: 8 месяцев, 25 дней
Карма: 2




$sql = "INSERT INTO `users` (`name`,`pass`) VALUES('$name','$pass')";

Вот это будет работать, но не забывай экранировать данные, которые получаешь от пользователя, перед вставкой в БД

Цитата (StepCX75 @ 30.03.2016 - 15:39)
Что это вообще? нафига то кавычки двойные, то одиночные, то значок `


Об этом почитай в мануалах по PHP и MySQL


--------------------
- Сколько тебе надо времени на задачу?
- Месяц.
- А если дам тебе помощника?
- Тогда два месяца.
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Игорь_Vasinsky  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Лысый и злой
******

Профиль
Журнал
Группа: ★ЛжеЭксперт★
Завсегдатай форума
Сообщений: 25994
Пользователь №: 21350
На форуме: 6 лет, 8 месяцев, 26 дней
Карма: 725

Не курю:
1 год, 2 месяца, 13 дней


пароль в открытом виде не хранят, как правило. - хранят его хеш.


--------------------
Халявные ответы кончились.
Если нужен готовый код - готовьтесь заплатить.
Райкин тоже был артист

Возле дома был сарай
А когда всё хорошо
Можно просто покурить

user posted image
http://ufa102.xyz/
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
StepCX75  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 7
Пользователь №: 42767
На форуме: 8 месяцев, 11 дней
Карма:




Цитата (Игорь_Vasinsky @ 30.03.2016 - 17:02)
пароль в открытом виде не хранят, как правило. - хранят его хеш.

Я знаю. Я не хочу здесь что то скрыть, у меня запись не происходит, понятное дело что пароль будет в хэш и тд
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
StepCX75  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 7
Пользователь №: 42767
На форуме: 8 месяцев, 11 дней
Карма:




уже пухнет голова. помогите пожалуйста. Читал, искал ничего не понятно толком. Понял что тут важно конкантенация вроде.

как правильно записать эти переменные в VALUE ?

<?php
$sql="INSERT INTO `users` (`name`,`pass`) VALUES ({$name},{$pass})";
?>


Это сообщение отредактировал StepCX75 - 30.03.2016 - 18:39
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Игорь_Vasinsky  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Лысый и злой
******

Профиль
Журнал
Группа: ★ЛжеЭксперт★
Завсегдатай форума
Сообщений: 25994
Пользователь №: 21350
На форуме: 6 лет, 8 месяцев, 26 дней
Карма: 725

Не курю:
1 год, 2 месяца, 13 дней


$sql="INSERT INTO `users` (`name`,`pass`) VALUES ('".mysql_real_escape_string($name)."','".mysql_real_escape_string($pass)."'";


чтобы получить ошибку запроса, на время разработки делай так

$query = mysql_query($sql) or die(mysql_error());


--------------------
Халявные ответы кончились.
Если нужен готовый код - готовьтесь заплатить.
Райкин тоже был артист

Возле дома был сарай
А когда всё хорошо
Можно просто покурить

user posted image
http://ufa102.xyz/
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
StepCX75  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 7
Пользователь №: 42767
На форуме: 8 месяцев, 11 дней
Карма:




Вот код

<?php
if ($_POST['ok'])
{
$name = $_POST['name'];
$pass = $_POST['pass'];
$name1 = mysql_real_escape_string($name);
$pass1 = mysql_real_escape_string($pass);
echo $name; // убедимся что переменные не пустые
$sql="INSERT INTO `users` (`name`,`pass`) VALUES ('".$name1."','".$pass1."'";
if (mysqli_query($mysql,$sql))
{
echo 'запись произведена';
}
}

$query = mysql_query($sql) or die(mysql_error());
?>


Fatal error: Uncaught Error: Call to undefined function mysql_real_escape_string() in C:\xampp\htdocs\auth.php:17 Stack trace: #0 {main} thrown in C:\xampp\htdocs\auth.php on line 17

Это сообщение отредактировал StepCX75 - 30.03.2016 - 19:23
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Игорь_Vasinsky  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Лысый и злой
******

Профиль
Журнал
Группа: ★ЛжеЭксперт★
Завсегдатай форума
Сообщений: 25994
Пользователь №: 21350
На форуме: 6 лет, 8 месяцев, 26 дней
Карма: 725

Не курю:
1 год, 2 месяца, 13 дней


уф... ну раз используешь mysqli - поклон от меня.

ну и перепиши префикс функции mysql_real_escape_string() на mysqli_real_escape_string()


--------------------
Халявные ответы кончились.
Если нужен готовый код - готовьтесь заплатить.
Райкин тоже был артист

Возле дома был сарай
А когда всё хорошо
Можно просто покурить

user posted image
http://ufa102.xyz/
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
StepCX75  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 7
Пользователь №: 42767
На форуме: 8 месяцев, 11 дней
Карма:




Цитата (Игорь_Vasinsky @ 30.03.2016 - 19:23)
уф... ну раз используешь mysqli - поклон от меня.

ну и перепиши префикс функции mysql_real_escape_string()  на mysqli_real_escape_string()

Исправил код, но теперь просто не происходит запись в бд. и Выдается вот такая ошибка
Warning: mysqli_real_escape_string() expects exactly 2 parameters, 1 given in C:\xampp\htdocs\auth.php on line 13

Warning: mysqli_real_escape_string() expects exactly 2 parameters, 1 given in C:\xampp\htdocs\auth.php on line 14



Вот собственно код:


<?php
if ($_POST['ok'])
{ $name = $_POST['name']; $pass = $_POST['pass'];

$name1 = mysqli_real_escape_string($name);
$pass1 = mysqli_real_escape_string($pass);
echo $name1,$pass1; // убедимся что переменные не пустые
$sql="INSERT INTO `users` (`name`,`pass`) VALUES ('".$name1."','".$pass1."'";
if (mysqli_query($mysql,$sql))
{
echo 'запись произведена';
}
}


?>


p.s. да, кстати. echo перестал выводить переменные после того как их сделали через mysqli_escape_string(). Значит в бд пустые они уже идут(((

Это сообщение отредактировал StepCX75 - 30.03.2016 - 19:38
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Игорь_Vasinsky  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Лысый и злой
******

Профиль
Журнал
Группа: ★ЛжеЭксперт★
Завсегдатай форума
Сообщений: 25994
Пользователь №: 21350
На форуме: 6 лет, 8 месяцев, 26 дней
Карма: 725

Не курю:
1 год, 2 месяца, 13 дней


бля. ты уничтожитель мозга. мануал для чего?
конечно ничего не выводит - функция захлёбывается.

ну http://php.net/manual/ru/mysqli.real-escape-string.php
1й аргумент - дескриптор соединения.

я 100 лет мускул в процедурном стиле не писал.


--------------------
Халявные ответы кончились.
Если нужен готовый код - готовьтесь заплатить.
Райкин тоже был артист

Возле дома был сарай
А когда всё хорошо
Можно просто покурить

user posted image
http://ufa102.xyz/
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
StepCX75  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 7
Пользователь №: 42767
На форуме: 8 месяцев, 11 дней
Карма:




Цитата (Игорь_Vasinsky @ 30.03.2016 - 19:42)
бля. ты уничтожитель мозга. мануал для чего?
конечно ничего не выводит - функция захлёбывается.

ну http://php.net/manual/ru/mysqli.real-escape-string.php
1й аргумент - дескриптор соединения.

я 100 лет мускул в процедурном стиле не писал.

Ахаха) Прости. Ну в общем вот код такой получился:

<?php
if ($_POST['ok'])
{ $name = $_POST['name']; $pass = $_POST['pass'];

$name1 = mysqli_real_escape_string($mysql,$name);
$pass1 = mysqli_real_escape_string($mysql,$pass);
echo $name1,$pass1; // убедимся что переменные не пустые
//$sql="INSERT INTO `users` (`name`,`pass`) VALUES ('".$name1."','".$pass1."')";4

$sql="INSERT INTO `users` (`name`,`pass`) VALUES ('$name1','$pass1')";
if (mysqli_query($mysql,$sql))
{
echo 'запись произведена';
}
}


?>

Закомментированная строка тоже имела попытку попробовать. Вроде всё правильно ну какого хера ничего не работает?
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Игорь_Vasinsky  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Лысый и злой
******

Профиль
Журнал
Группа: ★ЛжеЭксперт★
Завсегдатай форума
Сообщений: 25994
Пользователь №: 21350
На форуме: 6 лет, 8 месяцев, 26 дней
Карма: 725

Не курю:
1 год, 2 месяца, 13 дней


mysqli_query($mysql,$sql) or die( mysqli_error($mysql))


--------------------
Халявные ответы кончились.
Если нужен готовый код - готовьтесь заплатить.
Райкин тоже был артист

Возле дома был сарай
А когда всё хорошо
Можно просто покурить

user posted image
http://ufa102.xyz/
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
StepCX75  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 7
Пользователь №: 42767
На форуме: 8 месяцев, 11 дней
Карма:




Цитата (Игорь_Vasinsky @ 30.03.2016 - 19:59)
mysqli_query($mysql,$sql) or die( mysqli_error($mysql))

Спасибо большое!!! Нужно было сразу для отладки включить вывод ошибок mysql. Оказывается весь этот фестивать был из за того, что для поля id у меня был выставлен параметр уникальности, но не было AI и выдавало ошибку Duplicate entry '0' for key 'PRIMARY'. Спасибо. Всё работает. ООП стиль труднее освоить? я смотрю все на нем пишут
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Игорь_Vasinsky  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Лысый и злой
******

Профиль
Журнал
Группа: ★ЛжеЭксперт★
Завсегдатай форума
Сообщений: 25994
Пользователь №: 21350
На форуме: 6 лет, 8 месяцев, 26 дней
Карма: 725

Не курю:
1 год, 2 месяца, 13 дней


StepCX75
нк все пишут - на любителя.
совсем другие перспективы

в PHP я бы посоветовал с начала с процедуркой разобраться.


--------------------
Халявные ответы кончились.
Если нужен готовый код - готовьтесь заплатить.
Райкин тоже был артист

Возле дома был сарай
А когда всё хорошо
Можно просто покурить

user posted image
http://ufa102.xyz/
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
  Быстрый ответ
Информация о Госте
Введите Ваше имя
Кнопки кодов
Для вставки цитаты, выделите нужный текст и
НАЖМИТЕ СЮДА
Введите сообщение
Смайлики
:huh:  :o  ;) 
:P  :D  :lol: 
B)  :rolleyes:  <_< 
:)  :angry:  :( 
:unsure:  :blink:  :ph34r: 
     
Показать всё

Опции сообщения  Включить смайлики?
 Включить подпись?
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:

Опции темы Ответ в темуСоздание новой темыСоздание опроса