我的PHP代码需要显示所有行;如何做到这一点


My PHP code needs to display all rows; how can do this

这是显示我的问题的网站

http://teetimeqc.com/paypage.php

我想显示一整行,该行与列"cust_no"上的搜索查询项完全匹配

其他列为"prog_id"、"balance"、"cust5_id">

因此,用户搜索"140594",如果它与该行的"cust_no"完全匹配,则整个1行都会显示出来。

所以他们看到的结果是这样的:

ID#进度ID#客户编号#余额#

更新代码

到目前为止,感谢jtherman对的帮助

<code>
 <?php
 $db_host="***";
$db_username="****";
$db_password="****";
$db_name="***";
$db_tb_name="cust";
$db_tb_atr_name="cust_no";

  $db_prog="prog_id";
$db_bal="balance";
mysql_connect("****","*******","*****");
mysql_select_db("db461563732");
$query=mysql_real_escape_string($_GET['query']);

$query_for_result=mysql_query("SELECT * FROM $db_tb_name WHERE 
 $db_tb_atr_name  = '".$query."'");
echo "<h2>Search Results</h2>";
while($data_fetch=mysql_fetch_array($query_for_result))

   echo ($data_fetch[$db_tb_atr_name]);
   echo ($data_fetch[$db_prog]);


mysql_close();
?>

这是桌子的样子;Cust5_ID并不重要,它只是我用作主键的一个自动递增值。。。。。我应该将主键更改为"cust_no"吗?:

TABLE `cust`
(
    `cust5_id` Integer auto_increment primary key, 
    `prog_id` Integer not null,
    `cust_no` Integer null,
    `balance` Decimal(12, 2) null
) DEFAULT CHARACTER SET utf8 ENGINE=InnoDB;
INSERT INTO `cust`
(`cust5_id`,`prog_id`,`cust_no`,`balance`)
VALUES
(1,217770,145094,-178.01),
(2,219885,145113,-390.86),
(3,219888,145164,-206.55),
(4,226227,145279,0),
(5,227700,145340,0),
(6,219911,145344,0),
(7,227795,145410,-44.1);

更新问题更新后,错误发生了变化。现在您的问题是while()循环的语法有一个错误。使用大括号开始和结束while循环:

while($data_fetch=mysql_fetch_array($query_for_result)) { // <- here
  echo $data_fetch[$db_tb_atr_name];
  echo ", ";
  echo $data_fetch[$db_prog];
} // <- and here

但是,如果数据库中每个cust_no总是只包含一行,那么您可能会考虑添加一个唯一的索引或将其作为主键,这取决于数字的生成方式。那么您也不需要while()循环,因为您的查询总是只返回一行:

$data_fetch = mysql_fetch_assoc($query_for_result); // <-load the single row into $data_fetch
echo $data_fetch[$db_tb_atr_name];
echo ", ";
echo $data_fetch[$db_prog];

还要100%确保您拥有数据库的正确凭据。我建议你使用

mysql_connect($db_host, $db_username, $db_password);

现在看来,您正在代码中编写两次凭据(标记为*(?

从您的评论中可以看出,现在最好使用不推荐使用的mysql_*函数,而应该使用PDO函数来转换代码,请参阅http://www.php.net/manual/en/pdo.connections.php然而,这并不是这个问题的范围。

以前的答案

更改线路

 $db_tb_atr_name  like '%".$query."%'");

 $db_tb_atr_name  = '".$query."'");

这将是一个完全匹配。。。

然后更改线路

echo substr($data_fetch[$db_tb_atr_name], 0,10);

echo $data_fetch['cust5_id'].",".$data_fetch['prog_id'].",".$data_fetch['cust_no'].",".$data_fetch['balance'];

以查看您的结果格式化为您想要的格式。

同时更改

echo "</li><hr/>";

echo "</li>";

<hr/>部分可能会使某些浏览器无法正确呈现列表。。。实际上,当只显示一个结果时,显示有序列表是没有意义的。。。

$query_for_result=mysql_query("SELECT * FROM $db_tb_name WHERE 
$db_tb_atr_name like '%".$query."%'");

我想是

"SELECT * FROM FROM ".$db_tb_name." WHERE ".$db_tb_atr_name."like '%".$query."%'"

您将Integer作为String进行比较,如果它是精确值,为什么要使用%?

"SELECT * FROM FROM ".$db_tb_name." WHERE ".$db_tb_atr_name." = ".$query

相关文章: