|
|
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);
...
..
...
.. |
|
|
|
|
|
|
|
|
|
|

楼主 |
发表于 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。 |
|
|
|
|
|
|
|
|
|
|
发表于 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 呢? |
|
|
|
|
|
|
|
|
|
|
发表于 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
|
显示全部楼层
|
|
|
|
|
|
|
|
|
|
发表于 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问题。。 |
|
|
|
|
|
|
|
|
|
|

楼主 |
发表于 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 了再问你,再说声谢谢~~ |
|
|
|
|
|
|
|
|
| |
本周最热论坛帖子
|