$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_id
,vehicle_id
在这种情况下,当您在
$VehicleID
中输入值时,此新表中将有4行。