繁体   English   中英

使用 PDO (PHP) 从 SQL 数据库中提取数组值匹配项

[英]Pull Array Value matches from a SQL Database with PDO (PHP)

我有一个 ID 数组$friends = array(0001, 0002, 0003, 0004)和一个数据库,其中table_name = friendscolumn_header = fid fid in friends可能包含也可能不包含其中一个朋友 ID。 我想在查询中输入$friends ,并返回$friendsfid行中的所有现值。

我确定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.

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