多个$ _POST变量?

时间:2013-04-16 20:23:20

标签: php mysql

我在这里做错了什么?

// 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 [])”一次超过一个值?

6 个答案:

答案 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']) ) 

否则你的服务器可能会产生警告并记录它,这将是性能损失。