0

也许有人可以帮助我解决这个问题。这对我来说有点棘手。

我用 _GET 指代一个长数字(如 102030)。现在我想把这个长数字分成更短的数字(比如 10 20 30)。这个短数字是我在mysql数据库中的id,我想用它们获取所有id_name的foreach短数字(如name-10 name-20 name-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";
}
?>

谢谢

4

3 回答 3

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]' ....
于 2013-04-11T10:07:13.573 回答
0

让我们假设 $_GET['long_id'] 持有值“102030”。

那么你的 where 应该是这样的:

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

于 2013-04-11T10:13:46.467 回答
0

好的。与其在粗略的设计道路上大打出手,不如让我们重新考虑一下您的设计。

您的数据

你有一个很长的数字,102030然后你把它分开。请问,怎么做?您没有分隔符。PHP如何知道一个数字从哪里开始,一个数字在哪里结束?看来您已经确定了“每两个字符”。这是相当严格的代码。

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

您的数据库连接

您正在使用已弃用的代码!不再支持已弃用的代码,并且在更高版本的 PHP 中,将不工作。您需要将代码更新为mysqli或使用PDO对象。

于 2013-04-11T10:10:28.893 回答