0

我在这里做错了什么?

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

4

6 回答 6

1

您正在使用 & 而不是 &&。&&是逻辑与,请参见http://php.net/manual/en/language.operators.logical.php&是按位运算,这不是您在http://www.php 中寻找的内容。网络/手册/en/language.operators.bitwise.php

于 2013-04-16T20:26:00.070 回答
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')";

有一个错误报价。

而且,它&&和不是&

&&= 和

||= 或

并使用 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");

绑定一些参数,参数通常用:参数名称前表示。像: :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

于 2013-04-16T20:26:05.867 回答
0

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

于 2013-04-16T20:24:25.107 回答
0

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

if(isset($_POST['email']) && isset($_POST['job_id'])) {
于 2013-04-16T20:27:31.613 回答
0

TS:一次只想“if($_POST[])”多于一个值?

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

foreach ($_POST as $key => $post) {
  if(empty($post) {
   echo $key ." is empty";
  }
}
于 2013-04-16T20:30:09.863 回答
0

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

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

否则您的服务器可能会产生警告并记录它,这将影响性能。

于 2013-04-16T20:34:42.307 回答