1

这是我当前的代码:

<?php
//Account validation
session_start();
if(!(isset($_SESSION['login']))){
header("location:welcome.php");

}
else{
$userid=$_SESSION['userid'];
}

//connecting to mediadatabase
//server info
$server_username="root";
$server_password="";
$database="toob";
$server="127.0.0.1";

$db_handle=mysql_connect($server, $server_username, $server_password);
$db_found=mysql_select_db($database, $db_handle);

//Generating Media iD and checking against previous media ids already in use
$query= "SELECT max(media_id) FROM media WHERE id = '$userid'";
$result = mysql_query($query) or die("Unable to perform query");
$numrows = mysql_num_rows($result);

if($numrows > 0) {
$mediaid = mysql_result($result,0) or die("Can't retrieve cell");
$mediaid = $mediaid + 1;
} 
else{
print("No records exisiting");
$mediaid = 1;
}
print ($mediaid); 

?>

我试图在“Media_id”列中为特定用户找到最大的数字。用户由他们的“id”标识。如果找到结果,我想根据 media_id 值创建一个变量并将其命名为 $mediaid,然后我想将 $mediaid 加一。这个变量将在后面的编程中使用。如果没有该用户 ID 的记录,但我想将 $mediaid 设置为 1。

问题是用户是否不存在记录。如您所见,我已尝试使用 num rows 函数,但它不起作用这是我的语法问题吗?任何建议将不胜感激!

谢谢 :)

4

2 回答 2

0

如果在表中找不到任何行,您的查询将NULL在列中返回一行 因此您将始终返回 1;max(media_id)
mysql_num_rows($result);

您需要检查最大值

//Generating Media iD and checking against previous media ids already in use
$query= "SELECT MAX(media_id) AS max_id FROM media WHERE id='$userid'";
$result = mysql_query($query) or die("Unable to perform query");

$mediaid = mysql_result($result,0) or die("Can't retrieve cell");

if($mediaid != null) {
   $mediaid = $mediaid + 1;
} else {
   print("No records exisiting");
   $mediaid = 1;
}

SqlFiddle:http ://sqlfiddle.com/#!2/360dc8/1/0

于 2013-08-02T07:03:14.077 回答
0

简而言之:

$mediaid = ($mediaid = mysql_result($result,0)) ? $mediaid++ : 1;

说明:如果该用户存在 mediaid,则 mysql_result() 将返回它并填充 $mediaid 变量(因此 if 子句将为 true 并且 $mediaid 将设置为 $mediaid+1)否则 mysql_result() 将返回 false 并且 $mediaid 将设置为 1。

于 2013-11-12T06:55:04.723 回答