Официальный сайт студ.городка НГТУ
Программирование и БД » [MySQL и PHP]Проблема с запросом INSERT 

#1  29.03.10 13:58

[MySQL и PHP]Проблема с запросом INSERT

class Question {
    var $id;
    var $name;
    var $id_a;
    function __construct($id, $name, $id_a) {
        $this->id = $id;
        $this->name = $name;
        $this->id_a = $id_a;
    }
}
Question - название таблицы в базе с полями id, vopros,id_key и amount
function add_question($sql,$id_q,$name,$id_key){

$sql->sql_query('INSERT INTO Question Question.id, Question.vopros, Question.id_key, Question.amount VALUES '.$id_q.', '.$name.', '.$id_key.', '0'');

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

Исправлено Ponst (29.03.10 14:02)

Offline

#2  29.03.10 15:16

Re: [MySQL и PHP]Проблема с запросом INSERT

'.$name.' => \''.$name.'\'

Offline

#3  29.03.10 15:45

$up
Профиль

Re: [MySQL и PHP]Проблема с запросом INSERT

а мне кажется из-за
', '0'');
наверное вот так (не знаю как по синтаксису в php кавычки экранировать)
', \'0\'');

Offline

#4  29.03.10 16:18

Re: [MySQL и PHP]Проблема с запросом INSERT

вокруг нула ваще кавычке не нужны если INT

Offline

#5  29.03.10 16:18

Re: [MySQL и PHP]Проблема с запросом INSERT

$sql->sql_query("INSERT INTO Question (`id`, `vopros`, `id_key`, `amount`) VALUES (".$id_q.", ".$name.", ".$id_key.", '0');");
Двойные кавычки не подойдут?

Исправлено Кощей (29.03.10 16:19)

Offline

#6  29.03.10 23:13

Re: [MySQL и PHP]Проблема с запросом INSERT

Подойдут

$sql->sql_query("INSERT INTO `Question` (`id`, `vopros`, `id_key`, `amount`) VALUES (".$id_q.", '".addslashes($name).", ".$id_key.", 0)");

Для всех нечисловых значений (строки, дата и т.д.) используй функцию addslashes(), числа в кавычки заключать не обязательно, после запроса точку с запятой ставить тоже не обязательно

Offline

#7  30.03.10 11:02

Re: [MySQL и PHP]Проблема с запросом INSERT

мдааа...нищяет программинг

Offline

#8  02.04.10 17:58

Maq
Профиль

Re: [MySQL и PHP]Проблема с запросом INSERT

Ponst, $up, Кощей, predel.kawaiinosti, читайте больше маны по PHP и SQL, и чтобы не быть быдлом, читайте про sql инъекции.
бред тут какой-то понаписали.
и какой нафик addslashes? нужно юзать экранирование нативное для базы, поди у класса на который ссылается $sql даже есть метод типа escape.

$sql->sql_query("INSERT INTO Question (id, vopros, id_key, amount) VALUES (".intval($id_q).", '".$sql->sql_escape($name)."', ".intval($id_key).", 0)");

Offline

#9  02.04.10 17:59

Maq
Профиль

Re: [MySQL и PHP]Проблема с запросом INSERT

iDrum, +1

Offline

#10  02.04.10 22:40

Re: [MySQL и PHP]Проблема с запросом INSERT

Maq, про sql инъекции и экранирование знаем и используем. Так что твое именование всех подряд "быдлом", как минимум слишком поспешное. Как и откуда конструктору класса передаются входные переменные неизвестно, может они еще до создания объекта класса были проверены приведены к нужному виду. Да и вопрос был СОВСЕМ не в этом. Так что какой вопрос такой и ответ. Единственное - заметил в своем посте косяк - забыл поставить одинарные кавычки где $name.

Offline

#11  02.04.10 23:27

$up
Профиль

Re: [MySQL и PHP]Проблема с запросом INSERT

Maq, мне php ни к чему, по молодости на нём писал, но это уже больше 10 лет назад было 8)

«У быдла есть особенность: оно — всегда не ты. И это восхищает.»
— Олег Ладыженский

Offline

#12  03.04.10 22:21

Re: [MySQL и PHP]Проблема с запросом INSERT

Maq, Ты пишешь совсем не то, я нашел давно ошибку и она совсем проста, читай нормально...
Вот так мне надо было написать
$sql->sql_query('INSERT INTO Question (id,vopros,id_key,amount) VALUES ($id_q, '$name', $id_key, 0);
Так что вы тут развели дискуссию не по теме)
Тему можно закрыть

Offline

#13  08.04.10 17:24

Re: [MySQL и PHP]Проблема с запросом INSERT

мда... хреново вам живется без string.Format() и параметризованных запросов:))

Offline

#14  08.04.10 20:11

Re: [MySQL и PHP]Проблема с запросом INSERT

XuMiX, променял пэхэпе на C#? :)

Offline

#15  10.04.10 00:14

Re: [MySQL и PHP]Проблема с запросом INSERT

XuMiX, можно самому накидать обертку для sprintf(), чтобы пользоваться плейсхолдерами.
Есть еще DBSimple там с этим очень удобно работать.

А вообще автору надо немного разобраться с MySql  и все.

Offline

#16  11.04.10 17:07

Re: [MySQL и PHP]Проблема с запросом INSERT

efferson, с большим удовольствием:)

Offline

#17  11.04.10 17:09

Re: [MySQL и PHP]Проблема с запросом INSERT

GrAnD, на самом деле, даже в самом пхп есть mysql_query_params, не говоря уже про всякие библиотеки типа propel/doctrine/прочие ОРМ

Offline

#18  12.04.10 22:50

Re: [MySQL и PHP]Проблема с запросом INSERT

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

Исправлено Jaguar (12.04.10 22:51)

Offline

#19  13.04.10 01:47

Re: [MySQL и PHP]Проблема с запросом INSERT

Jaguar, лично я делаю так

Код: csharp:

using (var session = Session.Open(domain))
            {
                    using (var transactionScope = Transaction.Open())
                    {
                            //SomeMethod();
                            var doc = Query.All<FilterEntity>().Where(f => f.Integer == 1).Prefetch(s => s.ItemGroup).Single();
                            var qwe = Query.All<User>().Select(u => new { u.Created }).ToList();
 
 
                            var subs = doc.ItemGroup.Where(g => true).ToList();
 
                            foreach (var sub in subs)
                            {
                                sub.Name = "1111";
                            }
 
                            doc.ItemGroup.Add(new AnotherEntity(Guid.NewGuid()));
                            doc.ItemGroup.Add(new AnotherEntity(Guid.NewGuid()));
                            doc.ItemGroup.Add(new AnotherEntity(Guid.NewGuid()));
 
                            var uuu = Query.All<User>().Select(u => new { u.Created }).OrderBy(a => a.Created).First();
                        }
 
                        var fe = new FilterEntity(Guid.NewGuid()) { Date = DateTime.Now, Integer = 123 };
                        //var ss = Query.All<FilterEntity>().Where(f => f.NullableGuid.HasValue).Single();
                        fe.Integer = 2222;
 
                        transactionScope.Complete();
                    }
}

Исправлено XuMiX (13.04.10 01:47)

Offline

#20  13.04.10 11:32

Re: [MySQL и PHP]Проблема с запросом INSERT

писец какойто )

Offline

#21  13.04.10 15:12

Re: [MySQL и PHP]Проблема с запросом INSERT

XuMiX, щито это? :) Какая то новая имплементация LINQ to SQL?

Offline

#22  14.04.10 13:40

Re: [MySQL и PHP]Проблема с запросом INSERT

Offline

#23  15.04.10 08:23

Re: [MySQL и PHP]Проблема с запросом INSERT

XuMiX написал(а):

Jaguar, лично я делаю так

Код: csharp:

using (var session = Session.Open(domain))
            {
                    using (var transactionScope = Transaction.Open())
                    {
                            //SomeMethod();
                            var doc = Query.All<FilterEntity>().Where(f => f.Integer == 1).Prefetch(s => s.ItemGroup).Single();
                            var qwe = Query.All<User>().Select(u => new { u.Created }).ToList();
 
 
                            var subs = doc.ItemGroup.Where(g => true).ToList();
 
                            foreach (var sub in subs)
                            {
                                sub.Name = "1111";
                            }
 
                            doc.ItemGroup.Add(new AnotherEntity(Guid.NewGuid()));
                            doc.ItemGroup.Add(new AnotherEntity(Guid.NewGuid()));
                            doc.ItemGroup.Add(new AnotherEntity(Guid.NewGuid()));
 
                            var uuu = Query.All<User>().Select(u => new { u.Created }).OrderBy(a => a.Created).First();
                        }
 
                        var fe = new FilterEntity(Guid.NewGuid()) { Date = DateTime.Now, Integer = 123 };
                        //var ss = Query.All<FilterEntity>().Where(f => f.NullableGuid.HasValue).Single();
                        fe.Integer = 2222;
 
                        transactionScope.Complete();
                    }
}

так вот он какой, "hello world!" на csharp!

Offline

#24  15.04.10 10:24

Re: [MySQL и PHP]Проблема с запросом INSERT

:)

Offline

#25  15.04.10 15:55

Re: [MySQL и PHP]Проблема с запросом INSERT

XuMiX написал(а):

efferson, http://dataobjects.net/

До чего техника дошла :) И у тебя в конторе действительно используют это в продакшене? Нет, мне приходилось пару раз видеть использование Hibernate/Doctrine в бою на небольших Java/PHP проектах в новосибирских конторах... но на мой взгляд использование ORM - скорее исключение, чем правило. Хотя направление безусловно перспективное :)

Offline

#26  15.04.10 16:59

Re: [MySQL и PHP]Проблема с запросом INSERT

efferson написал(а):

но на мой взгляд использование ORM - скорее исключение

orly? ты серьезно?)

efferson написал(а):

И у тебя в конторе действительно используют это в продакшене?

пока на этапе разработки, но подобных решений море, скоро будет продакшн, самый настоящий Ъ ынтырпрайз)

Offline

#27  15.04.10 17:03

Re: [MySQL и PHP]Проблема с запросом INSERT

Matrim написал(а):

так вот он какой, "hello world!" на csharp!

Хотелось, конечно, изЪться, но не буду постить свой вариант хелловорлда)
Ограничусь ссылкой) http://lurkmore.ru/%D0%9F%D1%80%D0%BE%D … 1%81%D1%82

Исправлено XuMiX (15.04.10 17:11)

Offline

Программирование и БД » [MySQL и PHP]Проблема с запросом INSERT 

ФутЕр:)

© Hostel Web Group, 2002-2025.   Сообщить об ошибке

Сгенерировано за 0.158 сек.
Выполнено 14 запросов.