我的代码中存在问题
<?php
$con=mysqli_connect("localhost","test","test","test");
// Check connection
if (mysqli_connect_errno())
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
$result = mysqli_query($con,"select movie_name from jos_movie");
while ($row = mysqli_fetch_array($result)){
$movie_name= $row['movie_name'];
$xmls = simplexml_load_file("http://api.themoviedb.org/2.1/Movie.search/en/xml/myapi/$movie_name");
foreach($xmls->movies->movie as $movies){
$arrMovie_id= $movies->id;
}
echo $arrMovie_id;
}
?>
如果您看到我正在传递网址以获取电影ID的结果。当电影具有单一名称时,例如&#34; Ironman&#34;它获取正确的电影ID&#34; 10505&#34;如果电影名称是&#34; Ironman 2&#39;它不会工作,并提供错误的ID。 但是,如果我将movie_name作为&#34; ironman%202&#34;它取得了正确的结果。我怎样才能解决空间问题。从数据库中获取&#34; ironman 2&#34;
我试过了
while ($row = mysqli_fetch_array($result)){
$movie_name= urlencode($row['movie_name']);
$xmls = simplexml_load_file('http://api.themoviedb.org/2.1/Movie.search/en/xml/myapi/'.$movie_name);
和
while ($row = mysqli_fetch_array($result)){
$movie_name= rawurlencode($row['movie_name']);
$xmls = simplexml_load_file('http://api.themoviedb.org/2.1/Movie.search/en/xml/myapi/'.$movie_name);
它不起作用:(
由于
答案 0 :(得分:1)
您应该使用urlencode:
$movie_name = urlencode($row['movie_name']);
$xmls = simplexml_load_file('http://api.themoviedb.org/2.1/Movie.search/en/xml/myapi/'.$movie_name);
编辑:
如果你只想得到第一个(并且有效的)获取结果,那么在foreach循环中打破一个条件(我想检查id是否是一个整数就足够了):
<?php
$con=mysqli_connect("localhost","test","test","test");
// Check connection
if (mysqli_connect_errno())
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
$result = mysqli_query($con,"select movie_name from jos_movie");
while ($row = mysqli_fetch_array($result)){
$movie_name = rawurlencode(trim($row['movie_name']));
$xmls = simplexml_load_file("http://api.themoviedb.org/2.1/Movie.search/en/xml/myapi/$movie_name");
foreach($xmls->movies->movie as $movies){
$arrMovie_id = $movies->id;
if ($arrMovie_id && is_int($arrMovie_id)) break;
}
echo $arrMovie_id;
}
?>
答案 1 :(得分:0)
你可以尝试这些方法:
$movie_name = urlencode($row['movie_name']);
那应该将空格转换为%20。此外,如果电影标题中有任何非字母数字值,也应对它们进行编码。