Php 多个$u POST变量?

Php 多个$u POST变量?,php,mysql,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

我做错了什么

// 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($\u POST[])多个值?

您应该使用
&&
,而不仅仅是
&
。这确保两个条件都满足。

您使用的是&而不是&&&&是逻辑AND,请参阅, &是一种按位操作,这不是您在这里要找的

尝试更改

$sql = "INSERT INTO job_applications (id, email, job_id) VALUES ('','$email,'$job_id')";
为了

有一个错误的报价

而且,它的
&
和非
&

&&
=和

|
=或

使用PDO更新您自己,它更安全、更酷

正如@S.Visser所说,PDO有一些很酷的东西,比如:准备好的语句、占位符,它是一种对SQL注入更安全的lil

使用起来并不难:

// 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");
绑定一些参数,参数通常在参数名称前用
表示。比如:
:电子邮件
:姓名
:通行证
:用户
,等等。。。 还包含第三个参数,它是值类型。 值类型用PDO常量表示,可在此处找到: 这些常量看起来像
PDO::PARAM.*
也要完成这项工作,并在需要时引用值

$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

在if语句中复制过去的代码。

if(isset($_POST['email']) && isset($_POST['job_id'])) {
TS:只想一次“if($\u POST[])多个值

有一种方法可以通过$u POST['']循环,因为它是一个数组。但是你需要小心,检查每个用户的输入

foreach ($_POST as $key => $post) {
  if(empty($post) {
   echo $key ." is empty";
  }
}

除了逻辑运算符(
&&
vs
&
)之外,您最好使用:

if ( isset($_POST['email']) && isset($_POST['job_id']) ) 

否则,您的服务器可能会生成警告并将其记录下来,这将对性能造成影响。

您想知道这两个值是否都为非空
&
是按位AND运算符,
&
是逻辑的
。不要这样做<代码>mysql_real_escape_字符串($_POST['email'])使用绑定的参数和准备好的语句。还可以使用PDO类进行数据库连接。永远不要在sql注入中使用mysql_real_escape_字符串PDO在Stackoverflow上大肆宣传。超过50%的人读过这种评论。当你想传播你对PDO的热爱时,请给出一个理由,而不仅仅是说:
使用PDO
许多PHP程序员学会了如何使用MySQL或MySQLi扩展访问数据库。在PHP5.1中,有一种更好的方法。PHP数据对象(PDO)为准备语句和使用对象提供了方法,这将使您的工作效率大大提高@bolanhost一个关于PDO类的信息链接将非常感谢,什么是PDO类相对于mysql_real_escape_string?我的数据库连接应该更改为:$pdo=pdo(“mysql:host=localhost;dbname=database”,“username”,“password”);谢谢你提供的信息,如果没有StackOverflow,我不知道我会在哪里。当你想传播你对PDO的热爱时,请给出一个理由并解释。谢谢你的提示,@S.VisserThank你和我将研究PDO。@Nicos我在编辑中添加了一个简单的PDO教程。实际上你可以做
isset($\u POST['email'],$\u POST['job\u id']))
实现同样的目标。看见它更容易阅读,尤其是在检查3个或更多值时。@vascowhite使用“isset”而不是&&Nicos他在回答中使用了isset,无论如何,我只是建议一种更干净的使用方法。@vascowhite谢谢,这里有很多帮助。非常感谢。
if ( isset($_POST['email']) && isset($_POST['job_id']) )