[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Не получается записать данные в таблицу.
StepCX75
Всем привет. Уровень у меня мягко сказать начальный) Не судите строго. Дело такое, пишу простой скрипт для записи из формы методом 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. у меня не работает никак.
DragonNoir
$sql = "INSERT INTO `users` (`name`,`pass`) VALUES('$name','$pass')";

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

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


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

_____________
- Сколько тебе надо времени на задачу?
- Месяц.
- А если дам тебе помощника?
- Тогда два месяца.
Игорь_Vasinsky
пароль в открытом виде не хранят, как правило. - хранят его хеш.

_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
StepCX75
Цитата (Игорь_Vasinsky @ 30.03.2016 - 17:02)
пароль в открытом виде не хранят, как правило. - хранят его хеш.

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

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

<?php
$sql="INSERT INTO `users` (`name`,`pass`) VALUES ({$name},{$pass})";
?>
Игорь_Vasinsky
$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());


_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
StepCX75
Вот код

<?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
Игорь_Vasinsky
уф... ну раз используешь mysqli - поклон от меня.

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

_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
StepCX75
Цитата (Игорь_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(). Значит в бд пустые они уже идут(((
Игорь_Vasinsky
бля. ты уничтожитель мозга. мануал для чего?
конечно ничего не выводит - функция захлёбывается.

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

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

_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
StepCX75
Цитата (Игорь_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 'запись произведена';
}
}


?>

Закомментированная строка тоже имела попытку попробовать. Вроде всё правильно ну какого хера ничего не работает?
Игорь_Vasinsky
mysqli_query($mysql,$sql) or die( mysqli_error($mysql))


_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
StepCX75
Цитата (Игорь_Vasinsky @ 30.03.2016 - 19:59)
mysqli_query($mysql,$sql) or die( mysqli_error($mysql))

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

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

_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.