-1

我正在使用 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);
?>

笑话验证.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 代码时,似乎 validate 返回 false。这很奇怪,因为当我取出这些语句时,$username 和 $joke 将进入我的数据库,这意味着它们不能为空!。

帮助表示赞赏。谢谢。

4

3 回答 3

4

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

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

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

global $joke, $username

但是,最好声明您正在验证的内容,而不是依赖于在代码中其他地方声明和设置的那些变量。由于其他原因,使用 global 可能会静默失败。

于 2012-04-10T01:35:47.837 回答
2

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

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

if (validate($joke, $username)) {
   ...
}
于 2012-04-10T01:35:28.707 回答
1

function validate($joke,$username)

postvars另外,在将它们插入数据库之前过滤它们。

于 2012-04-10T01:36:08.160 回答