所以我是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
}
答案 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?