我建立了一个字符串数组,并尝试查询mySQL表。我想找到与我的项目列表相匹配的所有行,并用单词“ AND”分隔。我尝试了下面的代码,但没有结果返回。如何改进我的代码以使用implode执行正确的查询?
谢谢你的帮助。
$conditions = array(
'Monday',
'Tuesday',
'Wednesday'
);
$connection = mysqli_connect(DB_SERVER, DB_USER, DB_PASS, DB_NAME);
if (mysqli_connect_errno())
{
die("Database connection failed: " . mysqli_connect_error() . " (" . mysqli_connect_errno() . ")");
}
$query = "SELECT * FROM match_tracker ";
// append the conditions
$query.= "WHERE " . implode(" AND ", $conditions);
$result = mysqli_query($connection, $query);
if ($result)
{
echo "Results positive. ";
}
if (!$result)
{
echo "Empty results.";
die("database query failed.");
最佳答案
按照您的代码,您的SQL查询应如下所示:"SELECT * FROM match_tracker WHERE Monday AND Tuesday AND Wednesday"
。那是您想要的sql字符串吗?如果您希望拥有更有意义的东西,则必须使用关联数组。像下面这样更合适:
$conditions = array(
'Monday' => '1',
'Tuesday' => '4',
'Wednesday' => '3'
);
$connection = mysqli_connect(DB_SERVER, DB_USER, DB_PASS, DB_NAME);
if (mysqli_connect_errno())
{
die("Database connection failed: " . mysqli_connect_error() . " (" . mysqli_connect_errno() . ")");
}
$query = "SELECT * FROM match_tracker WHERE true";
// append the conditions
foreach($conditions AS $key => $value)
{
$query .= "AND $key = '". mysqli_real_escape_string($connection, $value). "'";
}
$result = mysqli_query($connection, $query);
if ($result)
{
echo "Results positive. ";
}
else if (!$result)
{
echo "Empty results.";
die("database query failed.");
}
我希望这有帮助。