Php代码工作正常,直到它被放入函数中

时间:2014-07-01 18:58:16

标签: php

我很神秘。如果它包含在标签中并且$ data1,$ data2变量通过$ POST获得,则下面的代码可以正常工作。但是,我希望它包含在一个函数中,如果我这样做:

function ($input1, $input2) {  (then the code here)  }

失败了。这与变量有关吗?或者你(只是猜测)不能要求"#34;函数中的某些东西?

无论如何......这里是代码。我觉得这是简单而语法的东西,但我完全难过。这是代码:

//Set the connection or die returning an error.
require "connection.php";

echo 'connected';

    // Make the query:

    $query = "INSERT INTO message (col1, col2) VALUES ('$somedata1', '$somedata2')";
    $result = @mysqli_query ($myconnection, $query); // Run the query.

    if ($result) { // If it ran OK.
echo "Success!";

    } else { // If it did not run OK.

        echo "Error";

    } // End of if 

    mysqli_close($myconnection); // Close the database connection.

//Free the result set.
mysqli_free_result($result);

//Close the connection.
mysqli_close($myconnection);

echo "<span style='color:red;'>Done.</span>";

编辑以添加更多代码:

首先,数据库连接如下:

<?php

DEFINE ('DB_USER', 'abcdef');
DEFINE ('DB_PASSWORD', '12345');
DEFINE ('DB_HOST', 'localhost');
DEFINE ('DB_NAME', 'mydb');

// Make the connection:
echo "Defined.";
$myconnection = mysqli_connect (DB_HOST, DB_USER, DB_PASSWORD, DB_NAME) 
OR die ('Could not connect to MySQL: ' . mysqli_connect_error() );
echo "Connected.";

// Set the encoding...

mysqli_set_charset($myconnection, 'utf8');

?>

我没有在具有该功能的页面中的任何其他地方调用它。我的希望是拥有连接所需的一切并将所有内容紧密存储在函数内部。也许这有助于或更有意义?

我没有达到调用该功能的程度。将其与其他功能一起包含在顶部会导致出现白色空白页面。

1 个答案:

答案 0 :(得分:1)

您正在使用在函数外部定义的变量$myconnection$data1$data2。将此行添加到函数的开头,它将起作用。请注意,您必须将每个变量的名称放在那里使用但未在函数中定义。

global $myconnection, $data1, $data2;

另外,不要将require放在函数中。

编辑:正如许多人所建议的,我将包括其他方式。

函数参数:

function func($myconnection, $data1, $data2) {
    // ... 
} 

// Calling the function 
func($myconnection, $data1, $data2);

<强> $GLOBALS

将所有$myconnection$data1$data2替换为$GLOBALS['myconnection']$GLOBALS['data1']$GLOBALS['data2']