PHP检查MySQL表是否包含变量

时间:2015-07-03 00:36:08

标签: php mysql mysqli

所以我是php的新手,我正在尝试检查mysql表是否包含用户进行搜索时设置的变量。如果表包含变量(它是一个字符串),那么我希望能够根据它的存在做不同的事情。

我还应该注意到我是php开发的新手!

这是我到目前为止所拥有的;

$db = new mysqli('IP', 'username', 'password', 'database');

$result = $db->query("SELECT * FROM tablename WHERE ColumnName =     $searchVar");

if(empty($result)){
    //No result Found
}else{
    //Found result
}

2 个答案:

答案 0 :(得分:1)

您需要在查询中的$searchVar周围放置单引号。

$result = $db->query("SELECT * FROM tablename WHERE ColumnName = '$searchVar'");

然后,您必须获取查询结果。

$result = $result->fetch_row();

答案 1 :(得分:1)

好的,因此您的当前查询失败,因为您的SQL字符串不在引号中。如果您的PHP字符串中包含单引号,那么一旦输入引号也可能失败。这就是SQL注入的方式,用户输入永远不应该直接传递给SQL查询。要分离这些任务,需要准备/参数化查询。

这里的代码我觉得应该对你有用,但这是未经测试的,基于手册。

$db = new mysqli('IP', 'username', 'password', 'database');
$stmt = $db->prepare('SELECT * FROM tablename WHERE ColumnName = ?');
$stmt->bind_param('s', $searchVar);
$stmt->execute();
if($stmt->num_rows > 0) {
    echo 'there are results';
} else {
    echo 'there are no results';
}

关于预防注射的线索链接:How can I prevent SQL injection in PHP?