php - DB 不会从 php 脚本渲染

标签 php mysql

晚上好...

这里是典型的 php 新手问题。这是一个个人项目,而不是寻找解决方案的大学生,需要从我的网站呈现数据库。下面的代码位于 WordPress 网站中,您将使用 WP 插件使用的短代码来代替 。

我已经与我的托管公司验证了我的数据库访问信息,我知道这不是问题所在。

我遇到的问题是我收到了 die 消息; “无法检索您的请求”。

DEFINE 变量已通过 Laughing Squid 验证,应该是正确的。当脚本运行时,您将看到一系列回显函数,以了解问题可能出在哪里,并且我一直通过“连接测试 3”,而“连接测试 4”从未呈现。

如果我在页面中输入搜索条件,我会收到“很高兴在这里见到您”消息。

非常感谢任何帮助......

//脚本如下

<html>
<head>
   <style/type = "text/css">

     table {
      background-color: #FCF;
     }

     th {
     width: 150px;
     text-align: left;
    }
   </style>
</head>

<body>
<h1>Race Search</h1>


<form method = "post" action="search.php"> 
<input type = "hidden" name = "submitted" value = "true"/>

<label> Search Race: 

<select name = "race">
   <option value = "date">Race Date</option>
   <option value = "city">Location</option>
   <option value = "race">Race</option>
</select>
</label>

<label>Search Criteria: <input type="text" name="criteria" /></label>

</form>

//short code from Wordpress plug-in
[allowphp useadvancedfilter]



DEFINE ('DB_USER', 'Removed');
DEFINE ('DB_PSWD', 'Removed');
DEFINE ('DB_HOST', 'Removed');
DEFINE ('DB_NAME', 'Removed');

$dbcon = mysql_connect(DB_HOST, DB_USER, DB_PSWD, DB_NAME);

//connection test 1
echo "connection1";

$race = $_POST['race'];
$criteria = $_POST['criteria'];

//connection test 2
echo "connection2";
$query  = "SELECT * FROM Races WHERE $category = '$criteria'";

//connection test 3
echo "connection3";
$result = mysqli_query($dbcon, $query) or die('Cannot retrieve your request');

//connection test 4, never gets here....
echo "connection4";
$num_rows = mysqli_num_rows($result);

echo "$num_rows results found";
echo "<table>";
echo "<tr><th>Race Date</th><th>Location</th><th>Event</th> </tr>";

while($row = mysqli_fetch_array($result, MYSQLI_ASSOC)) {

     echo "<tr><td>";
     echo $row['Date'];
     echo "</td><td>";
     echo $row['City'];
     echo "</td><td>";
     echo $row['Race Name'];
     echo "</td></tr>";
}

echo "</table>";

//short code from Wordpress plug-in
 [/allowphp useadvancedfilter]


</body>
</html>

最佳答案

您正在将 mysql_connect 与 mysqli_query 一起使用。您应该使用 mysqli_connect,它们不可互换。

如果您可以更新选择选项值以匹配您的列名称,则可以使用如下内容:

$where = '';
if (isset($_POST['race'])) {
    $race = $POST['race'];
    $where = ' WHERE `'.$race."` = '".mysql_real_escape_string($_POST['criteria'])."'";
}
$query = 'SELECT * FROM `Races`'.$where;

如果不是,那仍然可以工作,但是您需要使用 switch 语句或其他语句将 $race 设置为正确的值以匹配您的列名称。无论如何,您可能想这样做以确保 $_POST['race'] 是预期值。

关于php - DB 不会从 php 脚本渲染,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22366470/

相关文章:

mysql date_format 需要作为字符串返回

php - pdo_odbc的配置需要文件在/usr/local/但是没有文件

php - 如何使用google maps api检查路线之间是否存在某个地点

php - 更新sql查询不会通过php中的mysqli_query()更新记录

mysql - 返回计算值中的两个最高值

mysql 动态行

php - json 到 mysql 只插入最后一条记录

mysql - 使用 Ruby 从 MySQL DB 创建 CSV 文件而不创建文件

php - 当用户点击 mailto : html tag 时在 ubuntu 中使用 ssmtp

javascript - 通过 php 将 Annotorius 注释数据从 Image Slider 保存到 mySQL