我正在尝试创建一个搜索,其中列和值都是使用预准备语句的变量。查询是我需要帮助的地方。
$column=$_POST['filter'][0][columnName];
$value = trim($_POST['filter'][0][value]);
$stmt = $mysql->prepare("select * from TABLE WHERE $column like '%$value%'");
我希望能够指定不同的列和值对以与其他人一起使用 - 这样我就可以搜索第一列中的一个值,也可以搜索第二列中的另一个值。
谢谢!
答案 0 :(得分:0)
我认为PHP的mysql
库没有准备好语句。你的$ mysql变量实际上是mysqli或pdo连接对象吗?
使用mysqli,您的代码将如下所示:
$dbconnection = new mysqli('localhost', 'my_user', 'my_password', 'my_db');
$stmt = $dbconnection->prepare("select * from TABLE WHERE $column like '%?%'");
$stmt->bind_param('s',$value);
无法绑定列名的参数,这意味着您无法直接在查询中插入$column
。使用POST中用户传递给你的任何值来做这件事都是一个安全漏洞。由于它被限制为与您的一个列名相同,我建议首先验证它以确保它没有设置为不同的名称。