[英]Pull Array Value matches from a SQL Database with PDO (PHP)
我有一个 ID 数组$friends = array(0001, 0002, 0003, 0004)
和一个数据库,其中table_name = friends
, column_header = fid
。 fid
in friends
可能包含也可能不包含其中一个朋友 ID。 我想在查询中输入$friends
,并返回$friends
和fid
行中的所有现值。
我确定fid={array_values($friends)}
是错误的,但我不知道如何将值数组的 WHERE 部分传递给...
//All DB_X's are defined in another file that is included in this actual file
$db = new PDO("mysql:host=".DB_SERVER.";dbname=".DB_NAME, DB_USER, DB_PASS);
$stmt = $db->prepare("SELECT fid FROM friends WHERE fid={array_values($friends)} ORDER BY fid ASC");
$stmt->execute();
$friendResults = $stmt->fetchAll();
您将需要使用 SQL 的IN
运算符:
SELECT ... FROM ... WHERE foo IN (val1, val2, ...)
您可以使用 PHP 的implode()
function 来获得所需的 SQL 位:
$values = implode(', ', array_values($friends));
$query = "SELECT ... FROM ... WHERE fid IN ({$values})";
如果您的值是数字,以上将起作用。 如果它们是字符串,则必须在implode()
ing 之前修改值:
$values = array_map(array_values($friends), function($value) {
return "'{$value}'"; // Here is where you could do sanitization
});
$values = implode(', ', $values);
请注意:您必须正确清理$friends
中的数据以防止 SQL 注入。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.