$sql = mysql_query("SELECT * FROM leg
WHERE trailers = '$VehicleID')


$VehicleID是单个变量。

trailers是由1个或多个变量组成的数组的列

目前,它仅返回在trailers列中仅具有1 $VehicleID变量的表行。

如何使预告片返回数组中包含$VehicleID变量的所有行?

最佳答案

使用IN子句和implode函数。

$VehicleID = array(1, 4, 5, 6);

$sql = mysql_query("SELECT * FROM leg
WHERE trailers IN (" . implode(',', $VehicleID) . ")");


您需要检查更多状态:
1)有一个数字:trailers = $VehicleID
2)数字在字段的开头:trailers LIKE '$VehicleID,%'
3)数字在字段的末尾:trailers LIKE '%,$VehicleID'
4)数字在字段中间:trailers LIKE '%,$VehicleID,%'

现在,您需要使用所有使用OR子句的选项(请不要忘记进行SQL注入):

$sql = mysql_query("SELECT * FROM leg
WHERE trailers =     $VehicleID    OR
      trailers LIKE '$VehicleID,%' OR
      trailers LIKE '%,$VehicleID' OR
      trailers LIKE '%,$VehicleID,%'


正确的数据库架构:
创建新表,例如trailers具有2个列:trailer_idvehicle_id

在这种情况下,当您在$VehicleID中输入值时,此新表中将有4行。

09-30 10:01