2013-04-11 61 views
0

也许有人可以帮助我解决这个问题。对我来说有点棘手。str_split并从mysql获取数据

我引用_GET一个很长的数字(如102030)。现在我想将这个长号码分成更短的号码(如10 20 30)。这个简短的数字是我的数据库中的数据库中的id和他们我想要得到所有id_name的foreach短号码(如名称10名称20名称30)。

要拆分我使用str_split的长号码,但我不知道如何使用此数组。

这是我的代码。 (该数据库是此代码之前包括)

<?php 
$long_id =$_GET[long_id]; 

if($_SESSION['test']) { 
foreach($_SESSION['test'] as $split_id => $number) { 

$split_id = str_split($long_id, 2); 

       $result = mysql_query("SELECT id, id_name FROM names"); 
//Here is my WHERE missing, because it's not working with split_id... 
       list($id, $id_name) = mysql_fetch_row($result); 
       while($row = mysql_fetch_array($result)){ 
       echo $id_name; 

       } 
} 
} else { 
    echo "test is empty"; 
} 
?> 

感谢

+0

[**请不要在新代码中使用'mysql_ *'函数**](http://bit.ly/phpmsql)。他们不再被维护[并且被正式弃用](http://j.mp/XqV7Lp)。看到[**红框**](http://j.mp/Te9zIL)?学习[*准备的语句*](http://j.mp/T9hLWi),并使用[PDO](http://php.net/pdo)或[MySQLi](http://php.net/ mysqli) - [这篇文章](http://j.mp/QEx8IB)将帮助你决定哪个。如果你选择PDO,[这里是一个很好的教程](http://j.mp/PoWehJ)。 – 2013-04-11 10:08:29

+0

你的意思是你缺少这里'$ result = mysql_query(“SELECT id,id_name FROM names where .....”);' – 2013-04-11 10:13:33

+0

感谢您的参考。会考虑它... – Potator 2013-04-11 10:17:16

回答

1

改变这种

$long_id =$_GET[long_id]; 

$long_id =$_GET['long_id']; 

,你可以尝试这个

$result = mysql_query("SELECT id, id_name FROM names WHERE id= '$split_id[0]' "); 

这将寻找两个第一的数字,如果你想在其他数字也

您可以添加

OR id= '$split_id[1]' OR id= '$split_id[2]' .... 
+0

是的,我试过了。但结果也是空的,没有错误.. – Potator 2013-04-11 11:14:38

0

好。我们只需重新思考一下您的设计,而不是在一个粗略的设计路径上敲击。

你的数据

你有一个长的数字,102030,你拆分了。我可以问,怎么样?你没有分隔字符。 PHP如何知道一个数字开始和一个数字结束的位置?看起来你已经解决了'每两个角色'。这是相当严格的代码。

我建议采取CSV方法,并使用逗号分割数字。这样,如果你必须调试,它对你来说更具可读性,代码将更加灵活。这意味着您可以将14904909作为ID,而不是01

你的数据库连接

您使用过时代码!弃用的代码不再受支持,并且在更高版本的PHP中,将不起作用。您需要将代码更新到mysqli或使用PDO对象。

+0

好吧,我试着用PDO连接。结果是空的,没有结果没有错误。 – Potator 2013-04-11 10:57:31

+0

你是否尝试过调试你的代码,并检查你的值? – christopher 2013-04-11 10:58:38

+0

我仍然在调试代码。 – Potator 2013-04-11 11:02:20

0

让我们假装$ _GET ['long_id']保存值“102030”。

然后你在那里应该是这样的:

WHERE id=$split_id[0] OR id2=$split_id[1] OR id3=$split_id[2] 

要只显示所有单独的ID,你可以做到以下几点:

$long_id =$_GET[long_id]; 
foreach ($split_id as $id) 
{ 
    echo "This is a id: ".$id."<br />"; 
} 

输出: 这是一个ID:10 这是一个ID:20 这是一个ID:30

+0

好吧,就像我想要的东西。但是,现在的$ val呢? – Potator 2013-04-11 12:44:24