佳礼资讯网

 找回密码
 注册

ADVERTISEMENT

楼主: cath

php mysql 问题--->72#php message box

[复制链接]
发表于 22-3-2008 05:25 PM | 显示全部楼层
试试这个:

<?php

if (!empty($_GET)) {
        // something was post in GET
        $alpha = $_GET['alphebet'];
}

// Query database
..
..
..

$sql = "SELECT * FROM yourtable WHERE keyword LIKE '" . $alpha . "%'";
$result = mysql_query($sql);
...
..
...
..
回复

使用道具 举报


ADVERTISEMENT

 楼主| 发表于 22-3-2008 07:26 PM | 显示全部楼层
好的,我再试试看,谢谢~~
回复

使用道具 举报

 楼主| 发表于 22-3-2008 08:54 PM | 显示全部楼层
可以了,但read不到database的data,你可以帮我看看我的code吗?


<?php
$link = $PHP_SELF."?alphabet";
$alphabet_array = array('A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X ','Y','Z');
?>

<form id="form1" name="form1" method="get" action="test_alpha_array.php">
<?php echo '<center> | ';
for($i = 0 ; $i < count($alphabet_array); $i++)
{
echo '<a href='.$link.'='.strtolower($alphabet_array[$i]).'>'.$alphabet_array[$i].'</a> | ';
}
?>
</form>

<p>
  <?php

if (!empty($_GET)) {
        // something was post in GET
        $alpha = $_GET['alphabet'];
                echo $alpha;
}
?>
<?php

mysql_select_db($database_con_oked, $con_oked);
$query_Recordset1 = "SELECT * FROM rootword WHERE rootword.word LIKE '" . $alpha . "%'";
$query_limit_Recordset1 = sprintf("%s LIMIT %d, %d", $query_Recordset1, $startRow_Recordset1, $maxRows_Recordset1);
$Recordset1 = mysql_query($query_limit_Recordset1, $con_oked) or die(mysql_error());
$row_Recordset1 = mysql_fetch_assoc($Recordset1);

?>
</p>
<p> </p>
<p> </p>
<p> </p>

<table border="0">
  <tr>
    <td>id</td>
    <td>word</td>
  </tr>
  <?php do { ?>
    <tr>
      <td><?php echo $row_Recordset1['id']; ?></td>
      <td><?php echo $row_Recordset1['word']; ?></td>
    </tr>
    <?php } while ($row_Recordset1 = mysql_fetch_assoc($Recordset1)); ?>
</table>
<p> </p>
<?php
mysql_free_result($Recordset1);
?>

[ 本帖最后由 cath 于 22-3-2008 09:17 PM 编辑 ]
回复

使用道具 举报

发表于 24-3-2008 11:17 AM | 显示全部楼层
看来是没什么问题咧,你可以echo你的$query_limit_Recordset1来看看吗?看看你的Query是怎样的。还有你的$startRow_Recordset1及$maxRows_Recordset1是多少?

顺便说一下,你用'a%'只能找到以a开头的,比如abc, aaa.....。 如果你想找所有凡是有a的,那应该用 '%a%'。

希望可以帮到你。
回复

使用道具 举报

发表于 24-3-2008 10:19 PM | 显示全部楼层
echo $query_Recordset1;
SELECT * FROM rootword WHERE rootword.word LIKE 'b%'

echo $query_limit_Recordset1;
SELECT * FROM rootword WHERE rootword.word LIKE 'b%' LIMIT 0, 0

我沒有設定 $startRow_Recordset1, $maxRows_Recordset1,
而 LIMIT 0, 0 會 return empty ( 沒有 record )
回复

使用道具 举报

发表于 25-3-2008 12:18 AM | 显示全部楼层
问题就在$startRow_Recordset1, $maxRows_Recordset1了。LIMIT 0, 0 怎么会有result呢?

LIMIT 0, 1 的意思是从第一个Record开始,显示1个record。 LIMIT 0, 30就是从第一个record开始,显示30行record。 LIMIT 5, 10就是从第六个record开始显示10行。。。。

LIMIT 0, 0就是从第一行开始,显示0行。那无论怎样都没有result洛。试试将startrow 及maxrow设定号码吧,可以用0, 30。
回复

使用道具 举报

Follow Us
发表于 25-3-2008 12:21 AM | 显示全部楼层
LIMIT 0, 0 肯定不会有result的。LIMIT 0, 0的意思是从第一个record开始,显示0行。

试试用LIMIT 0, 30吧。将startrow改成0,maxrow改成30。意思是从第一个record开始,显示30行。。。。
回复

使用道具 举报

 楼主| 发表于 26-3-2008 11:42 AM | 显示全部楼层
yhchan,非常谢谢你噢~~我等一下再test看,现在我又有新的问题想请教你。。是关于mysql auto increment id。。如果我想拿database 的auto increment id该如何拿?
SELECT MAX(ID) AS LAST_ID FROM rootword对吗?但如果我是要拿MAX(ID)加1,该如何做 php code 呢?
回复

使用道具 举报


ADVERTISEMENT

发表于 26-3-2008 05:41 PM | 显示全部楼层
不对,Max() 在少人用的Website行得通,但繁忙的就有问题了。

Example: A 和 B正同时购买产品。A买了电脑(Database 会Insert New Row, ID = 10)。然后,B也买了鞋子(Database 又Insert New Row, ID = 11)。

但,B去上厕所,A比B先按"Show my last purchased item"。如果你用SELECT MAX(), 那你会得到11,即是B的产品!

说了那么多,其实你用mysql_insert_id() 就行啦 Php已经内建了这个function。

mysql_query("INSERT INTO mytable (product) values ('kossu')";
printf("Last inserted record has id %d\n", mysql_insert_id());
回复

使用道具 举报

发表于 26-3-2008 05:44 PM | 显示全部楼层
mysql_insert_id() 会得到你刚刚Insert所 generated 的ID。

如果你要拿最大的ID,就用SELECT MAX()咯。

可以说说你想拿Max ID / generated ID来怎么用呢?
回复

使用道具 举报

 楼主| 发表于 26-3-2008 09:00 PM | 显示全部楼层
其实我只是想拿data进入database时的id..因为我要把id在同时间输入不同的table..like foreign key..所以用max应该没问题。。之前我试过用mysql_insert_id() 但它一直show 0,所以改变主意
回复

使用道具 举报

发表于 27-3-2008 12:51 PM | 显示全部楼层
mysql_insert_id() 不能吗?不可能吧?

如果你的Table只有一个Auto Increment Field,那Insert之后,mysql_insert_id(),应该可以拿到刚刚generated的ID。

如果还是不能,那就Paste你的Table structure及Query来参考一下洛。
回复

使用道具 举报

发表于 27-3-2008 01:18 PM | 显示全部楼层

回复 31# cath 的帖子

如果table有记录噢php session id,用max也是可以的。
在where那边作检查比较php session id,就不会拿错了。
不过,performance来说,还是mysql_insert_id();
回复

使用道具 举报

发表于 27-3-2008 05:08 PM | 显示全部楼层
原帖由 o1j2m3 于 27-3-2008 01:18 PM 发表
如果table有记录噢php session id,用max也是可以的。
在where那边作检查比较php session id,就不会拿错了。
不过,performance来说,还是mysql_insert_id();


对对对,用session id来match也是可以的。这样就不会拿错别人的record了。
回复

使用道具 举报

 楼主| 发表于 28-3-2008 11:53 PM | 显示全部楼层
哗,真的很谢谢你们宝贵的意见。。php session id 是user login 时才有的吗?
回复

使用道具 举报

 楼主| 发表于 29-3-2008 01:58 PM | 显示全部楼层
search by alpha 我做到了,现在做着id问题。。
回复

使用道具 举报


ADVERTISEMENT

 楼主| 发表于 29-3-2008 02:45 PM | 显示全部楼层
想问你们, 如果我现在insert data to a table,然后我在同时间想拿到当时的auto id应该如何?比如说,我insert 'apple'进table,然后我要在同时间拿apple的id进另一个table,该如何做?
回复

使用道具 举报

 楼主| 发表于 29-3-2008 02:50 PM | 显示全部楼层
我可以用mysql_insert_id() 加一来代替吗?如果可以该如何做php code?
回复

使用道具 举报

发表于 29-3-2008 04:36 PM | 显示全部楼层
为什么要+ 1呢?

举个例子,
mysql_query("INSERT INTO table VALUES ('Apple')");
Insert过后,

$new_id = mysql_insert_id();
这个$new_id就是Insert时generate的ID了。你可以怎样用都行。

要Insert 这个ID进别的Table,就mysql_query("INSERT INTO another_table VALUES('$new_id')");
要得到ID + 1,就
$new_id++;
大概是酱洛。。。
回复

使用道具 举报

 楼主| 发表于 29-3-2008 09:38 PM | 显示全部楼层
加一是因为我想拿到当时data要insert时的id。。  mysql_insert_id不是最后insert的data的id吗?你应该不明我所说。。 我test 了再问你,再说声谢谢~~
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

 

ADVERTISEMENT



ADVERTISEMENT



ADVERTISEMENT

ADVERTISEMENT


版权所有 © 1996-2023 Cari Internet Sdn Bhd (483575-W)|IPSERVERONE 提供云主机|广告刊登|关于我们|私隐权|免控|投诉|联络|脸书|佳礼资讯网

GMT+8, 30-12-2025 10:03 AM , Processed in 0.115446 second(s), 20 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表