我从最近几天徘徊,一旦点击主页面上的查看详细信息按钮,无法完成如何从数据库中检索特定行的数据。 [s_no是唯一的]
这是我的主页; 的 view.php
<?php
include('dbconnect.php');
$select=mysql_query("SELECT * FROM forms order by s_no desc");
$i=1;
while($userrow=mysql_fetch_array($select))
{
$s_no=$userrow['s_no'];
$title_pro=$userrow['title_pro'];
$institute=$userrow['institute'];
$email=$userrow['email'];
$contact=$userrow['contact'];
$date=$userrow['date'];
?>
<p align="center"><a href="submit_pro.php">View Paginated</a></p>
<div class="display">
<p> S.No : <span><?php echo $s_no; ?></span>
<p> Title of the proposal: <span><?php echo $title_pro; ?></span>
<a href="delete.php?id=<?php echo $s_no; ?>"
onclick="return confirm('Are you sure you wish to delete this
Record?');">
<span class="delete" title="Delete"> X </span></a>
</p>
<br />
<p> Institute: <span><?php echo $institute; ?></span>
<a href="table_print.php?id=<?php echo $s_no; ?>"><span class="edit"
title="Edit"> VIEW DETAIL</span></a>
</p>
<br />
<p> Email: <span><?php echo $email; ?></span>
</p>
<br />
<p> Contact name and address: <span><?php echo $contact; ?></span>
</p>
<br />
<p> SUBMITTED ON : <span><?php echo $date; ?></span>
</p>
<br />
</div>
<?php } ?>
这个主页面(view.php)运行正常。现在。一旦我点击view.php(主页面)上的查看详细信息按钮,它应该查看特定行的所有细节。 下面是table_print(详细信息页面)代码,它是不完整的,我无法做到。
第二页:table_print.php
<?php
$mysql_hostname = "localhost";
$mysql_user = "root";
$mysql_password ="";
$mysql_database = "iaoform_db";
// Create connection
$conn = new mysqli($mysql_hostname, $mysql_user, $mysql_password, $mysql_database);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$id = $_GET['id']; //read id from get inputs
$sqli = "SELECT s_no, title_pro, type, cycle, type_pro, thesis, year,
proposer, institute,
email,present,contact,abstract,status_ongoing,status_file,
sch_request,no_night,no_night_impossible,just_request,mode_ob,
brief_descrip,plan,hfosc_b,hfosc_n,hfosc_g,hfosc_s,hesp_r,hesp_o,
tirspec_b,tirspec_n,tirspec_s,tirspec_c,tirspec_slits,obj_name,obj_ra,
obj_dec,obj_epoch,obj_mag,obj_size,scient_just,date,
status FROM forms WHERE s_no = ?"; //add a where clause with place
holder
$stmt = $conn->prepare($sqli);
$stmt->bind_param("i", $id); //bind input parameters
$stmt->execute();
$stmt->store_result();
/* Get the number of rows */
$num_of_rows = $stmt->num_rows;
/* Bind the result to $row variable */
$stmt->bind_result($row);
if($num_of_rows < 1){ //exit or send the result if number of rows is less than one
echo "Can't find any record!";
mysqli_close($conn);
exit();
} {
?>
<!---------------------------------------------------->
<?php
while ($stmt->fetch())
{
<table class="tg">
<tr>
<th class="tg-9hbo">S.No</th>
<th class="tg-yw4l" colspan="5"><?php echo $row["s_no"]; ?> </th>
</tr>
<tr>
<td class="tg-9hbo">Title of the proposal:</td>
<td class="tg-yw4l" colspan="5"><?php echo $row["title_pro"]; ?>
</td>
</tr>
<tr>
<td class="tg-9hbo">Type:</td>
<td class="tg-yw4l" colspan="5"><?php echo $row["type"]; ?> </td>
</tr>
|
|
|
|
|
<tr>
<td class="tg-9hbo">Submission date:</td>
<td class="tg-yw4l" colspan="5"><?php echo $row["date"]; ?> </td>
</tr>
</table>
/* free results */
$stmt->free_result();
}
mysqli_close($conn);
?>
非常感谢完成这项工作。非常感谢提前...... !!!
答案 0 :(得分:1)
查询中没有WHERE子句来获取特定行。 id出现在$_GET
数组中。并且需要使用带有占位符的预处理语句来防止sql注入。请尝试以下代码
<?php
$mysql_hostname = "localhost";
$mysql_user = "root";
$mysql_password ="";
$mysql_database = "iaoform_db";
// Create connection
$conn = new mysqli($mysql_hostname, $mysql_user, $mysql_password, $mysql_database);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$id = $_GET['id']; //read id from get inputs
$sqli = "SELECT s_no, title_pro, type, cycle, type_pro, thesis, year,
proposer, institute,
email,present,contact,abstract,status_ongoing,status_file,
sch_request,no_night,no_night_impossible,just_request,mode_ob,
brief_descrip,plan,hfosc_b,hfosc_n,hfosc_g,hfosc_s,hesp_r,hesp_o,
tirspec_b,tirspec_n,tirspec_s,tirspec_c,tirspec_slits,obj_name,obj_ra,
obj_dec,obj_epoch,obj_mag,obj_size,scient_just,date,
status FROM forms WHERE s_no = ?"; //add a where clause with place holder
$stmt = $conn->prepare($sqli);
$stmt->bind_param("i", $id); //bind input parameters
$stmt->execute();
$stmt->store_result();
/* Get the number of rows */
$num_of_rows = $stmt->num_rows;
/* Bind the result to $row variable */
$stmt->bind_result($row);
if($num_of_rows < 1){ //exit or send the result if number of rows is less than one
echo "Can't find any record!";
mysqli_close($conn);
exit();
} { ?>
<!---------------------------------------------------->
<?php
while ($stmt->fetch())
{ ?>
<table class="tg" id="myModal">
<tr>
<th class="tg-9hbo">S.No</th>
<th class="tg-yw4l" colspan="5"><?php echo $row["s_no"]; ?> </th>
</tr>
<tr>
<td class="tg-9hbo">Title of the proposal:</td>
<td class="tg-yw4l" colspan="5"><?php echo $row["title_pro"]; ?>
</td>
</tr>
<tr>
<td class="tg-9hbo">Type:</td>
<td class="tg-yw4l" colspan="5"><?php echo $row["type"]; ?> </td>
</tr>
<tr>
<td class="tg-9hbo">Number of cycles/nights:</td>
<td class="tg-yw4l" colspan="5"><?php echo $row["cycle"]; ?> </td>
</tr>
<tr>
<td class="tg-9hbo">Type of the proposal:</td>
<td class="tg-yw4l" colspan="5"><?php echo $row["type_pro"]; ?> </td>
</tr>
<tr>
<td class="tg-9hbo">Title of the thesis:</td>
<td class="tg-yw4l" colspan="5"><?php echo $row["thesis"]; ?> </td>
</tr>
<tr>
<td class="tg-9hbo">Expected year of thesis submission:</td>
<td class="tg-yw4l" colspan="5"><?php echo $row["year"]; ?> </td>
</tr>
<tr>
<td class="tg-amwm" colspan="6">List of Proposer:</td>
</tr>
<tr>
<td class="tg-9hbo" colspan="2">Proposer</td>
<td class="tg-9hbo">Institute</td>
<td class="tg-9hbo">Email</td>
<td class="tg-9hbo" colspan="2">Present</td>
</tr>
<tr>
<td class="tg-9hbo" colspan="2"><?php echo $row["proposer"]; ?> </td>
<td class="tg-yw4l"><?php echo $row["institute"]; ?> </td>
<td class="tg-yw4l"><?php echo $row["email"]; ?> </td>
<td class="tg-yw4l" colspan="2"><?php echo $row["present"]; ?> </td>
</tr>
<tr>
<td class="tg-9hbo">Contact name and address:</td>
<td class="tg-yw4l" colspan="5"><?php echo $row["contact"]; ?> </td>
</tr>
<tr>
<td class="tg-9hbo">Abstract:</td>
<td class="tg-yw4l" colspan="5"><?php echo $row["abstract"]; ?> </td>
</tr>
<tr>
<td class="tg-9hbo" colspan="2">Status of ongoing / Previous
proposal</td>
<td class="tg-9hbo" colspan="4">Attached file</td>
</tr>
<tr>
<td class="tg-9hbo" colspan="2"><?php echo $row["status_ongoing"]; ?>
</td>
<td class="tg-yw4l" colspan="4"><?php echo $row["status_file"]; ?>
</td>
</tr>
<tr>
<td class="tg-9hbo">Scheduling request:</td>
<td class="tg-yw4l" colspan="5"><?php echo $row["sch_request"]; ?>
</td>
</tr>
<tr>
<td class="tg-amwm" colspan="6">No. of nights requested</td>
</tr>
<tr>
<td class="tg-amwm" colspan="2">Preferred dates</td>
<td class="tg-amwm" colspan="4">Impossible date</td>
</tr>
<tr>
<td class="tg-9hbo" colspan="2"><?php echo $row["no_night"]; ?> </td>
<td class="tg-yw4l" colspan="4"><?php echo $row["no_night_impossible"];
?> </td>
</tr>
<tr>
<td class="tg-9hbo">Justification for scheduling request:</td>
<td class="tg-yw4l" colspan="5"><?php echo $row["just_request"]; ?>
</td>
</tr>
<tr>
<td class="tg-9hbo">Instrument:</td>
<td class="tg-yw4l" colspan="5"><?php echo $row["instru1"]; ?> </td>
</tr>
<tr>
<td class="tg-9hbo">Mode of Observation:</td>
<td class="tg-yw4l" colspan="5"><?php echo $row["mode_ob"]; ?> </td>
</tr>
<tr>
<td class="tg-9hbo">Brief description of observations:</td>
<td class="tg-yw4l" colspan="5"><?php echo $row["brief_descrip"]; ?>
</td>
</tr>
<tr>
<td class="tg-9hbo">Plans for data reduction and analysis:</td>
<td class="tg-yw4l" colspan="5"><?php echo $row["plan"]; ?> </td>
</tr>
<tr>
<td class="tg-amwm" colspan="6">HFOSC</td>
</tr>
<tr>
<td class="tg-9hbo" colspan="2">Broad Band Filters</td>
<td class="tg-9hbo">Narrow Band Filters</td>
<td class="tg-9hbo">Grisms</td>
<td class="tg-9hbo" colspan="2">Slits</td>
</tr>
<tr>
<td class="tg-9hbo" colspan="2"><?php echo $row["hfosc_b"]; ?> </td>
<td class="tg-yw4l"><?php echo $row["hfosc_n"]; ?> </td>
<td class="tg-yw4l"><?php echo $row["hfosc_g"]; ?> </td>
<td class="tg-yw4l" colspan="2"><?php echo $row["hfosc_s"]; ?> </td>
</tr>
<tr>
<td class="tg-amwm" colspan="6">HESP</td>
</tr>
<tr>
<td class="tg-amwm" colspan="2">Resolution</td>
<td class="tg-amwm" colspan="4">Observation mode</td>
</tr>
<tr>
<td class="tg-amwm" colspan="2"><?php echo $row["hesp_r"]; ?> </td>
<td class="tg-yw4l" colspan="4"><?php echo $row["hesp_o"]; ?> </td>
</tr>
<tr>
<td class="tg-amwm" colspan="6">TIRSPEC</td>
</tr>
<tr>
<td class="tg-9hbo">Broad Band Filters</td>
<td class="tg-9hbo">Narrow Band Filters</td>
<td class="tg-9hbo">Single Order Dispersers</td>
<td class="tg-9hbo">Cross Dispersers</td>
<td class="tg-9hbo" colspan="2">Slits</td>
</tr>
<tr>
<td class="tg-9hbo"><?php echo $row["tirspec_b"]; ?> </td>
<td class="tg-yw4l"><?php echo $row["tirspec_n"]; ?> </td>
<td class="tg-yw4l"><?php echo $row["tirspec_s"]; ?> </td>
<td class="tg-yw4l"><?php echo $row["tirspec_c"]; ?> </td>
<td class="tg-yw4l" colspan="2"><?php echo $row["tirspec_slits"]; ?>
</td>
</tr>
<tr>
<td class="tg-amwm" colspan="6">List of objects: (essential)</td>
</tr>
<tr>
<td class="tg-9hbo">Name</td>
<td class="tg-9hbo">RA (hh mm ss)</td>
<td class="tg-9hbo">Dec (dd mm ss)</td>
<td class="tg-9hbo">Epoch</td>
<td class="tg-9hbo">V mag</td>
<td class="tg-9hbo">size</td>
</tr>
<tr>
<td class="tg-yw4l"><?php echo $row["obj_name"]; ?> </td>
<td class="tg-yw4l"><?php echo $row["obj_ra"]; ?> </td>
<td class="tg-yw4l"><?php echo $row["obj_dec"]; ?> </td>
<td class="tg-yw4l"><?php echo $row["obj_epoch"]; ?> </td>
<td class="tg-yw4l"><?php echo $row["obj_mag"]; ?> </td>
<td class="tg-yw4l"><?php echo $row["obj_size"]; ?> </td>
</tr>
<tr>
<td class="tg-9hbo">Scientific Justification:</td>
<td class="tg-yw4l" colspan="5"><?php echo $row["scient_just"]; ?>
</td>
</tr>
<tr>
<td class="tg-9hbo">Submission date:</td>
<td class="tg-yw4l" colspan="5"><?php echo $row["date"]; ?> </td>
</tr>
</table>
<?php
/* free results */
$stmt->free_result();
}
mysqli_close($conn);
?>
答案 1 :(得分:0)
您似乎已将s_no
作为网址参数id
传递到第二页。所以第二页需要选择它(即id = $_GET['id']
),然后你可以在SQL查询中使用它来添加WHERE s_no = id
。
注意:在将其放入SQL之前,您需要引用任何字符串,否则您将遇到SQL注入漏洞(即Internet上的任何人都可以删除您的数据库)。使用prepared statements。
此外,如果s_no
是唯一的,您在第二页上不需要while
- 您可以获取单行(如果存在)。
答案 2 :(得分:0)
你正在打开php标签,但没有关闭它,这就是你得到语法错误的原因
查询语句必定存在问题,请确保表名和列名正确
$sqli = "SELECT s_no, title_pro, type, cycle, type_pro, thesis, year,
proposer, institute,
email,present,contact,abstract,status_ongoing,status_file,
sch_request,no_night,no_night_impossible,just_request,mode_ob,
brief_descrip,plan,hfosc_b,hfosc_n,hfosc_g,hfosc_s,hesp_r,hesp_o,
tirspec_b,tirspec_n,tirspec_s,tirspec_c,tirspec_slits,obj_name,obj_ra,
obj_dec,obj_epoch,obj_mag,obj_size,scient_just,date,
status FROM forms WHERE s_no = ?";