PHP PDO使用一个字符串在两列或更多列中搜索值

时间:2014-12-11 12:37:39

标签: php mysql pdo

当我想使用PDO从行中找到值时,我使用以下方法:

//Search whether user exists
$sqlQueryEmailLogin = $dbh->prepare("SELECT vendor_id, first_name, last_name, email_login, user_password, passport_id, login_attempts, login_last_attempt FROM $tableVendorDetails WHERE email_login = ?");
$sqlQueryEmailLogin->bindValue(1, $emailLogin);
$sqlQueryEmailLogin->execute();

以及搜索字段的以下PHP代码

$emailLogin = 'xyz@abc.com'

现在我想搜索两列或更多列并使用以下代码

$sql = "SELECT * FROM articles WHERE id = ? AND status = ?"; 
$stmt = $conn->prepare($sql);
$stmt->bindValue(1, $id); 
$stmt->bindValue(2, $status); 
$stmt->execute();

我想从字符串中搜索两列。我该怎么办呢?

我去的字符串值来自带有一个输入框的html表单

我喜欢能够从MySQL表中搜索两个值的字符串,例如 $search = $id;

$seach = $status; 
在这种情况下,

都互相取消

4 个答案:

答案 0 :(得分:2)

您可以使用@gbestard描述的方法简化它。但你也应该这样做:

$search = 'asdf'; // fill this with your form input

$sql = "SELECT * FROM articles WHERE id = :id OR status = :status"; 
$stmt = $conn->prepare($sql);
$stmt->execute(array(
    ':id'     => $search, 
    ':status' => $search,
));

请注意查询中对OR的更改,并多次提供$search ...

答案 1 :(得分:0)

您应该使用OR代替AND。这样,您将获得所有符合id或状态的行。

SELECT * FROM articles WHERE id = ? OR status = ?

答案 2 :(得分:-1)

这就是我正在使用的

$sql = "SELECT * FROM articles WHERE id = :id AND status = :status"; 
$stmt = $conn->prepare($sql);
$stmt->execute(array(':id' => $id , ':status' => $status));

答案 3 :(得分:-1)

尝试以下

$sql = "SELECT * FROM articles WHERE id = :id AND status = :status";
$stmt = $conn->prepare($sql);
$stmt->bindValue(':id', $id); 
$stmt->bindValue(':status', $status); 
$stmt->execute();

请参阅文档http://php.net/manual/en/pdostatement.bindvalue.php