Хранение и доступ к фрагменту кода в функции - PullRequest
0 голосов
/ 04 июня 2009

В моей папке включает в себя функцию ...

function storelistingUno() {

$itemnum=mysql_real_escape_string($_POST['itemnum']);
$msrp=mysql_real_escape_string($_POST['msrp']);
$edprice=mysql_real_escape_string($_POST['edprice']); //This value has to be the same as in the HTML form file
$itemtype=mysql_real_escape_string($_POST['itemtype']);
$box=mysql_real_escape_string($_POST['box']);
$box2=mysql_real_escape_string($_POST['box2']);
$box25=mysql_real_escape_string($_POST['box25']);
$box3=mysql_real_escape_string($_POST['box3']);
$box4=mysql_real_escape_string($_POST['box4']);
$box5=mysql_real_escape_string($_POST['box5']);
$box6=mysql_real_escape_string($_POST['box6']);
$box7=mysql_real_escape_string($_POST['box7']);
$box8=mysql_real_escape_string($_POST['box8']);
$itemcolor=mysql_real_escape_string($_POST['itemcolor']);
$link=mysql_real_escape_string($_POST['link']);
$test = "yes!";

}

Я ссылаюсь на это примерно на 8 страницах, и я решил, что будет проще просто сделать из него функцию и теперь только касаться этого. Поэтому я ссылался на storelistingUno(); в своем коде, но я не думаю, что это сработало, потому что я пытался выполнить echo $test; и ничего не произошло Нужно ли что-то возвращать?

Спасибо.

Ответы [ 4 ]

1 голос
/ 04 июня 2009

Если вам абсолютно необходимы эти переменные, глобальные

function storelistingUno()
{
    $desiredGlobals = array( 
         'itemnum'
        ,'msrp'
        ,'edprice'
        ,'itemtype'
        ,'box'
        ,'box2'
        ,'box25'
        ,'box3'
        ,'box4'
        ,'box5'
        ,'box6'
        ,'box7'
        ,'box8'
        ,'itemcolor'
        ,'link'
    );
    foreach ( $desiredGlobals as $globalName )
    {
        if ( isset( $_POST[$globalName] ) )
        {
            $GLOBALS[$globalName] = mysql_real_escape_string( $_POST[$globalName] );
        }
    }
}
1 голос
/ 04 июня 2009

Просмотр extract () . Вы можете сделать что-то вроде этого:

<?php

function getEscapedArray()
{
  $keys = array('itemnum', 'msrp', 'edprice', 'itemtype', 'box', 'box2', 'box25', 'box3', 'box4', 'box5', 'box6', 'box7', 'box8', 'itemcolor', 'link');

  $returnValues = array();
  foreach ($keys as $key) {
    $returnValues[$key] = mysql_real_escape_string($_POST[$key]);
  }

  $returnValues['test'] = 'yes!';

  return $returnValues;

}

extract(getEscapedArray());
echo $test;

Хотя - это все еще не лучший способ сделать это. Лучше всего просто использовать возврат из этой функции в качестве массива.

$parsedVals = getEscapedArray();
echo $parsedVals["test"];
1 голос
/ 04 июня 2009

$ test - это локальная переменная в этой функции - вам нужно либо сделать ее глобальной (поставив global $test; в начале функции или используя $GLOBALS['test'] вместо просто $test или вернуть значение.

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

Edit: Другим способом было бы включить код вместо использования функции - хотя и не рекомендуется ...

0 голосов
/ 04 июня 2009

Вы должны пометить каждую переменную как глобальную, прежде чем начинать редактировать их внутри функции ... это не рекомендуется, так как это плохой стиль кодирования, но это может помочь вам

$test = '';
function foo() {
    global $test;
    $test = 'bar';
}
echo $test; //prints nothing
foo();
echo $test; // prints "bar"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...