我使用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会进入我的数据库,这意味着它们不能为空!
帮助表示赞赏。感谢。
答案 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
。