我有這樣的代碼:變量是空當的foreach完成
function composeInsertSql($insertData)
{
$columns = '';
$values = '';
foreach($insertData as $data)
{
$columns .= $data[0].', ';
if($data[2] == 1)
{
$values .= '"'.$data[1].'", ';
}
else if($data[2] == 2)
{
$values .= $data[1].', ';
}
else if($data[2] == 3)
{
$values .= 'md5("'.$data[1].'"), ';
}
else
{
return false;
}
}
$result['columns'] = rtrim($columns, ', ');
$result['values'] = rtrim($values, ', ');
return $result;
}
的代碼工作正常時,它是一個獨立的功能,而是一個類裏面不起作用。 當它在類中時,foreach結束時變量「values」和「columns」是空的。在foreach裏面我使用echo,我可以看到它們的值,但是當它完成時,它們是空的。
爲該類函數的調用時的另一類功能在同一個類:
function genericInsert($table, $insertData)
{
$sqlData = self::composeInsertSql($insertData);
$columns = $sqlData['columns'];
$values = $sqlData['values'];
$sqlInsert = 'INSERT INTO '.$table.' ('.$columns.') values ('.$values.')';
echo "$sqlInsert\n"; // borrar y descomentar las siguientes lineas.
這兩個功能都在相同的類。此功能的呼叫是:
$db = new DB();
$dblink = $db->connect();
$insertData = array(
array('paypal_id', '161411002', '2'),
array('name', 'Marco', '1'),
array('mail', '[email protected]', '1'),
array('product_id', '1', '2'),
array('profile_id', '1', '2'),
array('insert_time', 'now()', '2'),
array('state', '1', '0')
);
$db->genericInsert('user_client2', $insertData);
您最後一個數組的第三個值爲'0',並且在您的函數中,您的值等於'1','2'和'3'的條件。你'else'條件結束你的函數返回'false'。 – DontVoteMeDown