这是我目前的代码:
<?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函数,但是它无法正常工作这是我的语法问题吗?任何建议都会受到大力赞赏!
谢谢:)
答案 0 :(得分:0)
如果您的表格中未找到任何行,您的查询将在NULL
列中返回max(media_id)
行
因此,mysql_num_rows($result);
将始终返回1;
您需要检查最大值
//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
答案 1 :(得分:0)
简而言之:
$mediaid = ($mediaid = mysql_result($result,0)) ? $mediaid++ : 1;
说明:如果该用户存在mediaid,那么mysql_result()将返回它并填充$ mediaid变量(因此if子句将为true且$ mediaid将设置为$ mediaid + 1)否则mysql_result()将返回false并且$ mediaid将设置为1。