PHP/MySqli:准备了MySqli语句,其中包含2个表和不返回数据的WHERE


PHP/MySqli: Prepared MySqli statement with 2 tables and WHERE not returning data

我正试图从罪犯数据库的两个表中获取数据,当我添加"and critical_name='FIDEL URBINA'"以仅获取每个罪犯的数据时,它不会返回任何信息。

这是我现在的代码和SQL语句,

$stmt = $mysqli->prepare("SELECT criminal_name, event_location FROM criminal_profile, criminal_locations 
    WHERE criminal_profile.criminal_id = criminal_locations.criminal_id");
$stmt->execute();
$stmt->bind_result($criminal_name, $event_location); //get data from statement
$stmt->store_result();

 if($formaat=='xml'){ //XML
            $xml=new SimpleXMLElement('<criminals></criminals>');

            while($stmt->fetch()) // zolang er rijen zijn
            {
                // $criminal_name, Scriminal_pob en $event_location zijn gevuld
                //voeg element criminal_pob toe met naam criminal_pob, criminal_name en event_location:
                $info = $xml->addChild('criminal');
                $item = $info->addChild('criminal_name',$criminal_name);
                $item = $info->addChild('event_location',$event_location);
            }
            header('Content-type: text/xml'); //DIT WERKT NIET? cant send headers after they were sent
            // coderen als JSON:
            echo $xml->asXML();
        }

它根据罪犯的活动地点重复罪犯,如图所示:

http://grabilla.com/05b0e-a271d885-dc45-47ad-a043-c92d832162bd.png

有人知道当我添加"AND critical_name='FIDEL URBINA'"或类似的东西时,为什么不返回数据吗?我还试过"AND crimination_name='F%'"。

这可能是一个匹配问题,您可以尝试使用like运算符而不是=

"SELECT criminal_name, event_location FROM criminal_profile, criminal_locations 
WHERE criminal_profile.criminal_id = criminal_locations.criminal_id 
AND criminal_name LIKE '%FIDEL URBINA%");