我在这里做错了什么?
// INSERT: if we have a name to add...
if($_POST['email'] & $_POST['job_id'] ) {
// little bit of cleaning...
$email = mysql_real_escape_string($_POST['email']);
$job_id = mysql_real_escape_string($_POST['job_id']);
// insert new name into table
$sql = "INSERT INTO job_applications (id, email, job_id) VALUES ('','$email,'$job_id')";
$result = mysql_query($sql, $conn) or trigger_error("SQL", E_USER_ERROR);
} // end if
我正在使用'&'但没有运气,是否有一定的语法包含在变量上?只想“if($ _ POST [])”一次超过一个值?
答案 0 :(得分:1)
你正在使用&而不是&&amp ;. && 是逻辑AND,请参阅http://php.net/manual/en/language.operators.logical.php, & 是按位操作,这不是您在这里寻找的http://www.php.net/manual/en/language.operators.bitwise.php
答案 1 :(得分:1)
尝试更改
$sql = "INSERT INTO job_applications (id, email, job_id) VALUES ('','$email,'$job_id')";
有关
$sql = "INSERT INTO job_applications (id, email, job_id) VALUES ('', '$email','$job_id')";
有一个错误的引用。
而且,&&
而非&
&&
= AND
||
= OR
使用PDO更新自己,更安全,酷。
正如@ S.Visser所说,PDO有一些很酷的东西,比如:预备语句,占位符,它对SQL注入更加安全。
使用起来并不难:
// Connect to MySQL Server
$user = "test";
$pass = "test";
$dbh = new PDO('mysql:host=127.0.0.1;dbname=test', $user, $pass);
// Prepare some statement
$stmt = $dbh->prepare("SELECT * FROM test WHERE `email` = :email");
绑定一些参数,params通常在param name之前用:
表示。喜欢:
:email
,:name
,:pass
,:user
等...
PDOStatement::bindParam
也有第三个参数,它是值类型。
值类型用PDO常量表示,可在此处找到:
http://www.php.net/manual/pt_BR/pdo.constants.php
这些常量看起来像PDO::PARAM_*
PDOStatement::bindParam
也会执行mysql_real_escape_string作业,并在需要时引用该值。
$stmt->bindParam(':email', 'email@example.com');
// Execute the statement
$stmt->execute();
// Fetch the result
$result = $stmt->fetchAll(PDO::FETCH_ASSOC);
// Show result array with print_r
print_r($result);
嗯,就是这样,抱歉英语,我是巴西人:P
答案 2 :(得分:0)
您应该使用&&
而不仅仅是&
。这确保了两个条件都得到了满足。
答案 3 :(得分:0)
在if语句中复制粘贴代码。
if(isset($_POST['email']) && isset($_POST['job_id'])) {
答案 4 :(得分:0)
TS:只想“if($ _ POST [])”一次超过一个值?
有一种方法可以循环使用$ _POST [''],因为它是一个数组。但是你需要小心它并检查每个用户的输入!
foreach ($_POST as $key => $post) {
if(empty($post) {
echo $key ." is empty";
}
}
答案 5 :(得分:0)
除了逻辑运算符(&&
vs &
)之外,您最好使用:
if ( isset($_POST['email']) && isset($_POST['job_id']) )
否则你的服务器可能会产生警告并记录它,这将是性能损失。