2012-04-10 67 views
-1

我使用的是Android应用程序将数据发送到PHP脚本。以下是PHP脚本。PHP变量后不工作

telejoke.php:

<?php 
    include 'JokeValidation.php'; 
    include 'DBConnect.php'; 

    $username = $_POST['username']; 
    $joke = $_POST['joke']; 
    $dbname = 'Telejoke'; 
    mysql_select_db($dbname); 

    if (validate()){ 
    $query = "INSERT INTO jokes (username, joke) VALUES ('$username','$joke')"; 
    mysql_query($query) or die('Error, insert query failed'); 
    } 
    mysql_close($conn); 
?> 

jokevalidation.php:

<?php 
    include 'DBConnect.php'; 
    $dbname = 'telejoke'; 
    mysql_select_db($dbname); 
    function validate(){ 
    if ($joke == null) return false; 
    else if($username == null) return false; 
    return true; 
    } 
?> 

出于某种原因,PHP脚本将数据放入数据库中,当我拿出if ($joke == null) return false;else if($username == null) return false;。但是当我将这些语句放入PHP代码中时,似乎验证返回false。这是奇怪,因为$ username和$笑话会去我的数据库,当我拿出这些声明意味着它们不能为空!

帮助表示赞赏。谢谢。

+1

并从那里你猜是你的validate方法得到瓦尔? – Rufinus 2012-04-10 01:31:19

+0

思想变量是文档范围。 :P – moesef 2012-04-10 01:50:48

+0

提示:在你的DBConnect.php文件中使用include_once,所以你不会创建多个连接......并且从它的外观来看,jokevalidation.php根本不需要数据库连接(除非你给我们只是一个片段)。 – 2012-04-10 02:20:47

回答

4

您的验证函数需要访问$ joke和$ username对象。

function validate($joke, $validate) { 
    if ($joke == null) 
     return false; 
    else if ($username == null) 
     return false; 
    return true; 
} 

您还可以通过使用可以访问这些变量的validate方法里面如下:

global $joke, $username 

然而,最好是说你真是验证什么,而不是依赖于这些变量是在您的代码中声明并设置其他位置。出于其他原因,使用全局可能会失败。

2

变量有功能范围。变量$joke$username不要在函数内部存在的,因为你既没有宣布,也没有通过他们进入功能。使用功能参数:

function validate($joke, $username) { 
    ... 
} 

if (validate($joke, $username)) { 
    ... 
} 
+0

哦。我认为他们有文件范围。 Thx澄清。 – moesef 2012-04-10 01:50:06

1

function validate($joke,$username)

还,将它们插入到你的数据库之前,过滤那些postvars