"вставить в $ schoolname ('cat', '...) $ _POST" оператор if "не передает значения в таблицу $ schoolname - PullRequest
1 голос
/ 17 января 2012

У меня проблемы с получением $ schoolname для чтения в команде "вставить в" mysql.

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

"вставить в $ schoolname ('cat', '...) По какой-то причине $ schoolname не перехватывает оператор $ _POST if

команда mysql" вставить в .... "передает значения, если я указываю жестко закодированное имя таблицы, но не передает значения, если я задаю переменную ($ schoolname) вместо имени таблицы. Мне нужно указать переменную, потому что есть несколько школ, каждая из которых имеетсвои столы.

    <?php
    require_once('include.php');
    include('imageupload.php');

$schoolid='';
if(isset($_GET['schoolid']) && isset($_GET['schoolid']) != '')
{
    $schoolid .= 'and id ='.$_GET['schoolid'];
}

$sqlschoolid = "select * from schools where status = 'Active' ".$schoolid;
$resschoolid = $obj->sql_query($sqlschoolid);
$school = $resschoolid[0];

$schoolname = $school['parameter'];
$schoolid2 = $school['id'];

    if($_POST)


{


    (isset($_POST['pr']) && $_POST['pr'] != "") ? $price=mysql_real_escape_string($_POST['pr']) :  $pr="" ;

    $sqlclass = "insert into $schoolname(`category`,`type`,`price`,`title`,`description`,`weburl`,`image`,`email`,`phone`,`address`,`city`,`state`,`zip`,`postdate`,`sponser`,`status`) 
    values('".$_POST['subcategory']."','".$_POST['type']."','".$pr."','".mysql_real_escape_string($_POST['title'])."','".mysql_real_escape_string($_POST['description'])."','".mysql_real_escape_string($_POST['weburl'])."','".$imagename."','".mysql_real_escape_string($_POST['email'])."','".mysql_real_escape_string($_POST['phone'])."','".mysql_real_escape_string($_POST['address'])."','".mysql_real_escape_string($_POST['city'])."','".mysql_real_escape_string($_POST['state'])."','".mysql_real_escape_string($_POST['zip'])."','".date('Y-m-d H:i:s')."','0','Active')";


    }

    ?>

Ответы [ 2 ]

2 голосов
/ 17 января 2012

Поскольку вы не указали, с какими проблемами вы сталкиваетесь, это только предположение:

if(isset($_GET['schoolid']) && isset($_GET['schoolid']) != '')

Разве это не должно быть

if(isset($_GET['schoolid']) && $_GET['schoolid'] != '')

В качестве дополнительного примечания рассмотрим, что произойдет, если пользователь введет следующее в schoolid:

0; delete from schools

Это известно как SQL-инъекция, и вы должны использовать «связывание переменных» вместо построения запроса путем объединения строк.

0 голосов
/ 17 января 2012

Кажется, проблема в следующем запросе:

$sqlschoolid = "select * from schools where status = 'Active' ".$schoolid;

Что такое переменная $ schoolid в конце? Я вижу, что такое переменная $ schoolid, и я предполагаю, что переменная isnНеправильно установлено.

Насколько я понимаю, приведенный выше запрос может выдать ошибку и, следовательно, $ schoolname не заполняется вообще.Не могли бы вы попробовать напечатать, как выглядит этот запрос?

РЕДАКТИРОВАТЬ 1 Читая прошлые обсуждения, становится ясно, что переменная $schoolname пуста, т.е. не имеет значения.Это не проблема области, потому что из вашего кода $schoolname находится в глобальной области видимости и поэтому доступен внутри проверки $ _POST IF.Итак, давайте попробуем отладить код для анализа параметров:

  1. Можете ли вы поставить echo $sqlschoolid; сразу после того, где вы написали запрос?Это подтвердит, что формат запроса правильный

  2. Предполагая, что запрос является хорошим, давайте теперь проверим, возвращает ли запрос правильные данные?Я не уверен, какой класс БД вы используете, поэтому я не могу сказать, что возвращает $ obj-> sql_query ()?Возможно, результат MySQL.В любом случае, вы можете поставить var_dump($resschoolid) сразу после того, где он инициализирован?И еще один var_dump($school) ниже?

Вот как я хотел бы, чтобы вы добавили операторы отладки:

$sqlschoolid = "select * from schools where status = 'Active' ".$schoolid;
echo $sqlschoolid;
$resschoolid = $obj->sql_query($sqlschoolid);
var_dump($resschoolid);
$school = $resschoolid[0];
var_dump($school);

$schoolname = $school['parameter'];
$schoolid2 = $school['id'];

Я надеюсь, что вышеизложенное даст больше пониманияэта проблема.Дайте мне знать, если у вас есть какие-либо вопросы.

...