В sql вставляются только цифры - PullRequest
0 голосов
/ 10 июня 2011

Итак, у меня есть эта форма

<form>Tag name:
    <input type='text' name='tagname' />
    <input type='submit' value='Add' />
    <input type='hidden' name='id' value='$id' />
</form>
<hr />

он запускает этот скрипт

if ($tagname) 
{   
    mysql_query("INSERT INTO tags (id, tag) VALUES ($id, $tagname)");
    ?>
    <script type="text/javascript">
    alert("Tag added.");
    history.back();
    </script>
    <?php
}   

Если я вставляю числа в форму, она добавляется в базу данных sql, но если она состоит из алфавитасимволы я получаю предупреждение, но ничего не вставлено в базу данных.Я проверил phpmyadmin, если структура неправильная (text / varchar / int ...), попробовал большинство из них, но это то же самое.

Ответы [ 5 ]

3 голосов
/ 10 июня 2011

Вам нужны кавычки вокруг $ id (если это не число) и $ tagname в вашем запросе mysql.

В качестве примечания, это уязвимо для внедрения SQL.

3 голосов
/ 10 июня 2011
mysql_query("INSERT INTO tags (id, tag) VALUES ($id, '$tagname')");

Очень распространенная ошибка. Подумайте об экранировании или, что лучше, параметризации запросов. Конкатенация SQL-запросов - ужасный подход (так же как и вставка небольшого фрагмента кода вместе, HTML, PHP, SQL и JavaScript)

3 голосов
/ 10 июня 2011

Чтобы заключить строки в запросы SQL, вам нужны одинарные кавычки:

 mysql_query("INSERT INTO tags (id, tag) VALUES ('$id', '$tagname')");

И я предполагаю, что вы также забыли применить mysql_real_escape_string заранее.

2 голосов
/ 10 июня 2011

Я вижу пару проблем с вашим кодом, сначала устанавливая значение для поля ввода идентификатора:

<input type="hidden" name="id" value="<?php echo $id; ?>" />

А затем в SQL вы должны использовать кавычки:

mysql_query("INSERT INTO tags (id, tag) VALUES ($id, '$tagname')");
1 голос
/ 10 июня 2011

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

INSERT INTO tags (id, tag) VALUES (0, $tag)
INSERT INTO tags (id, tag) VALUES ('', $tag)

Вы действительно должны работать:

INSERT INTO tags (tag) VALUES ('$tag')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...