PHP Post变量不起作用

时间:2012-04-10 01:28:50

标签: php android mysql post

我使用Android应用程序将数据发送到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;
  }
?>

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

帮助表示赞赏。感谢。

3 个答案:

答案 0 :(得分:4)

您的验证功能需要访问$ joke和$ username对象。

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

您还可以在validate方法中使用以下内容来访问这些变量:

global $joke, $username

但是,最好声明您正在验证的内容,而不是依赖于声明的代码并在代码中的其他位置设置。使用全局可能由于其他原因而无声地失败。

答案 1 :(得分:2)

变量具有功能范围。变量$joke$username在函数内部不存在,因为您既没有声明也没有将它们传递给函数。使用功能参数:

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

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

答案 2 :(得分:1)

function validate($joke,$username)

同样,在将它们插入数据库之前过滤那些postvars