繁体   English   中英

如果变量在SQL表中

[英]If variable is in SQL Table

是否可以检查变量是否在SQL表中?

例如,如果我想检查“土豆”是否在“蔬菜”表中?

$search = $_POST['search_input'] (potato)

你可以这样

CREATE TABLE veg(veg_items CHAR(30));

INSERT INTO veg  VALUES('potato'),('Redish'),('Ginger');

SELECT veg_items FROM veg WHERE veg_items = 'potato';
+-----------+
| veg_items |
+-----------+
| potato    |
+-----------+
1 row in set (0.00 sec)

使用PHP的mysql_方法,您可以这样做:

$sql = "SELECT COUNT(*) count FROM veg WHERE name = 'potato'";
$result = mysql_query($sql) or die('error');
$row = mysql_fetch_assoc($result);
if($row['num']) {
  echo 'vegetable exists';
}

这只是为了让您了解它是如何工作的。 如果您希望(并且应该这样做,因为不推荐使用mysql_)使用PDO或mysqli,则查询保持不变。


PDO示例

$vegetable = 'potato';
$stmt = $conn->prepare('SELECT 1 FROM veg WHERE name = :name');
$stmt->bindParam(':name', $vegetable, PDO::PARAM_STR);
$stmt->execute();
$row = $stmt->fetch(PDO::FETCH_ASSOC);

if($row) {
  echo 'vegetable exists';
}

WHERE子句中使用马铃薯:

Select * from veg where name='potato';

如果要检查某人的输入,请使用SELECT * FROM veg WHERE name='$search'

虽然提防mysql注入

对于此类查询,请尝试使用PDO语句..因为此类查询更易于进行SQL注入。

尝试下面

$sth = $dbh->prepare('SELECT count(*)   FROM veg     WHERE name =:name ');
$sth->execute(array('potato'));
$ret = $sth->fetchAll();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM