如何使用PHP脚本从Mysql数据库中提取所需的行

时间:2015-06-05 05:09:36

标签: php html mysql

我创建了一个从用户输入的HTML表单,现在我需要在Mysql数据库中搜索用户输入的名称,并打印与该用户输入相关的详细信息,该名称存储在Mysql数据库中。
下面的脚本是创建HTML表单以获取用户输入,保存为" ProcessTracking.html"。

<form action="details.php" method="get"/>
<h3 align="center"><FONT color=#CCFF66>ENTER SO NUMBER</h3>
<p align="center"> 

<input type="text" id="SO_Number" name="SO_Number"/>

</p>
<div style="text-align:center"> 
<button     type="submit" value="SEARCH">
   <img alt="ok" src=
   "http://www.blueprintcss.org/blueprint/plugins/buttons/icons/tick.png"/> 
   SEARCH
  </button>
 </form>

在PHP脚本下面命名为&#34; details.php&#34;

   <?php
$userinput = $_GET['SO_Number'];
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "ProcessTrackingSystem";

// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_errno) {
printf("Connect failed: %s\n", $conn->connect_error);
exit();
}

$result = mysqli_query($conn, "SELECT * FROM   ProcessTrackingSystem.ProcessDetails WHERE SO_Number = '$userinput'") or die(mysqli_error($conn));

$row = mysqli_fetch_assoc($result);
#printf ("SO_Number: %s \n",$row["SO_Number"])
#print_r($row);

printf ("SO_Number:");
printf($row["SO_Number"]);
printf ('--||--');
printf ("Name:");
printf($row["Name"]);
printf ('--||--');

$conn->close();
?>  

4 个答案:

答案 0 :(得分:1)

您将mysqlmysqli api混合在一起。尝试使用其中之一。

注意:mysql api自php 5.5.0起已被删除

答案 1 :(得分:1)

首先,您没有在SQL语句的WHERE中使用$ _GET [&#39; SO_Number&#39;]参数。其次你使用的是mysql和mysqli,它们完全不同并且不能一起工作。有关用法,请参阅mysqli_fetch_row()mysqli_query()。也可以使用print_r($row);

以下是更正后的代码:

<?php
$userinput = $_GET['SO_Number'];
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "ProcessTrackingSystem";

// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_errno) {
    printf("Connect failed: %s\n", $conn->connect_error);
    exit();
}

$result = mysqli_query($conn, "SELECT * FROM ProcessTrackingSystem.ProcessDetails WHERE SO_Number = '$userinput'") or die(mysqli_error($conn));

$row = mysqli_fetch_row($result);

print_r($row);

$conn->close();
?>   

编辑:添加了代码示例。

答案 2 :(得分:0)

第一次错误

正如saty所说,这是因为你在这一行中有语法错误

print_r"$row";

应为print_r($row)

第二次错误

你正在混合mysql&amp; mysqli

我不确定你的桌子。

推荐:

我建议你打开 error_reporting ,如果不是那些错误将出现在errors_log文件中

另外,对于调试你的sql ,你可以先构建你的sql查询,在phpmyadmin或相关工具中运行查询,然后激活查询并完成此操作。

注意:

如果您在线使用这些代码,则error_log将位于您执行此页面的目录中。 (但根据您的托管情况,它可能会有所变化)

如果您在本地计算机上运行,​​则错误日志可能会根据您使用的服务器找到...

您可以通过phpinfo打印php的配置找到并找到 error_log

答案 3 :(得分:0)

愿这件事能解决你的问题

<?php
    $servername = "localhost";
    $username = "root";
    $password = "";
    $dbname = "ProcessTrackingSystem";
    $so = $_POST['SO_Number'];

// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$stmt = $conn->prepare("SELECT * FROM ProcessDetails WHERE SO_Number=$so");
$stmt->execute();
$result = $stmt->get_result();
$row = $result->fetch_assoc();

print_r($row[SO_Number]);
$conn->close();
?>