2012-01-06 2 views
-2

Я хотел бы иметь возможность выбрать категорию из выпадающего списка и в зависимости от категории она добавит ее в любую таблицу SQL, с которой она равна.

<?php 

$article = $_POST['article']; 

$con = mysql_connect("******","******","*******"); 
if (!$con) 
    { 
    die('Could not connect: ' . mysql_error()); 
    } 

mysql_select_db("jstaltso_staltsoft", $con); 

$sql="INSERT INTO $article (headline, content) 
VALUES ('$_POST[headline]', '$_POST[content]')"; 

if (!mysql_query($sql,$con)) 
    { 
    die('Error: ' . mysql_error()); 
    } 
echo "Content Added!"; 
echo "<br/>"; 
echo "<a href='articles.php'><- Back</a>"; 

mysql_close($con) 

?> 

Я хочу, чтобы переменная $ articles была на месте, где вы указали название таблицы.

$sql="INSERT INTO $article (headline, content) 
VALUES ('$_POST[headline]', '$_POST[content]')"; 

Так что, что бы я ни выбрал в раскрывающемся списке, он будет помещен в $ articles.

+4

Прекрасный SQL у вас есть отверстия для инъекций. –

+0

Yup, переменная сидит в строке запроса так же, как $ _POST ['something'] (заметили, что вы забыли использовать кавычки или двойные кавычки для индекса вашего POST-массива) ... но в чем вопрос? Кроме того, использование $ _POST таким образом довольно небезопасно, вы знаете. – Alfabravo

+2

И вот где твой вопрос? – rjv

ответ

3

Try:

"INSERT INTO `{$article}` ...." 

Не забудьте дезинфицировать свой вклад! (Mysql_real_escape_string, для начинающих)

+0

Я просто получаю эту ошибку: Ошибка: неправильное имя таблицы '' – NizeGuy

+1

Если вы получаете неправильное имя таблицы ошибки, за которым следует '', мне кажется, что переменная $ article не установлена ​​в значение. –

+0

Спасибо, кучка! Он работает сейчас: D – NizeGuy

1

Вы не можете использовать этот тип переменных, изменить последний код $sql="INSERT INTO $article (headline, content) VALUES ('" . $_POST['headline'] " . ', '" . $_POST['content'] . "')";

+0

Почему? Это не нужно! – rjv

+0

Несомненно, вы не можете получить доступ к Array-Variables в этих кавычках. – Dion

+0

простые переменные, такие как переменная $, которую вы можете получить, но не тот тип. – Dion

0

Я знаю, что этот ответ не будет слишком полезно для вас прямо сейчас, но конюх есть слишком много не так с этим кодом и этим подходом, вот несколько советов:

  • Используйте PDO вместо функций MySQL PHP. Сначала это будет казаться сложным, особенно если у вас нет опыта работы с объектно-ориентированным программированием, но это определенно стоит усилий.
  • Санизировать это $article значение!if($article == 'foo' || $article == 'bar') {...}
  • Лучшие способы использования переменных в строках являются: "This is a ".$adjective." string" и "This is a {$adjective} string"
+0

I ' m далеко от дистанционно квалифицированных с PHP и SQL, и это просто для меня просто что-то простое, что я время от времени экспериментирую с формой. Но я постараюсь изучить PDO. – NizeGuy

0

Вы пропустили точку с запятой: P

mysql_close($con)

должен быть

mysql_close($con); 
+0

Где именно ??? – NizeGuy

+0

Последняя строка вашего кода – rjv

+0

Хорошо, спасибо большое. – NizeGuy

Смежные вопросы