【发布时间】:2018-03-19 22:18:29
【问题描述】:
所以,我从一个表单中得到这个字段的帖子
$OrderLNumber = $_POST['OrderLNumber'];
当我使用 Echo 进行检查时,它运行良好。 然后我将我的数据库与经典连接:
// Database Connection String
$con = mysql_connect($db_hostname,$db_username,$db_password);
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db($db_database, $con);
这很有效,因为页面实际上正在加载。当我弄乱代码的这一面时,页面不会加载。
然后我实际上是在尝试获取 SELECT FROM WHERE 并打印结果行。我不知道我在这部分代码中犯了什么样的错误:
$sql = "SELECT * FROM OrderStatus WHERE OrderLineNumber = $OrderLNumber ";
$result = mysql_query($con,$sql);
if (mysql_num_rows($result) > 0) {
while ($row = mysql_fetch_array($result)){
echo 'OrderLineNumber: ' .$row['OrderLineNumber'];
echo 'Date Started: ' .$row['DateStarted'];
echo 'Status: '.$row['Status'];
}
}
我不明白这是语法错误、服务器端错误还是逻辑错误。
非常感谢您。
更新(这应该有效吗?)
<?php
if($_POST['submit']) {
$OrderLNumber = $_POST['OrderLNumber'];
$results = $wpdb->get_results(
"
SELECT * FROM $wpdb->OrderStatus WHERE OrderLineNumber = $OrderLNumber
"
);
foreach ($results as $result)
{
echo $result;
}
}
else {
?>
【问题讨论】:
-
您很容易受到 SQL 注入 - 请停止使用
mysql_,因为它已被弃用。请改用mysqli_或 PDO。 -
@Edward 这是 WordPress,所以 WPDB 就是答案。
-
警告:通过将
$_GET数据直接放入查询中,您创建了一个危险的SQL injection bug。 永远不要这样做。相反,请使用 WordPress prepared statements feature 正确转义所有数据参数。 请勿在 WordPress 代码中使用mysql_query,它已从 PHP 7 中删除,因为它非常危险。 -
使用 WPDB 进行任何和所有数据库交互。 WordPress 已经知道如何连接到您的数据库并通过该接口运行查询。我已在第一条评论中链接到文档。
-
更接近,但在编写查询时要非常小心,不要放入
$OrderNumber之类的东西,这会产生SQL注入问题。而是输入?,并在执行时使用绑定功能添加数据。
标签: php mysql sql wordpress phpmyadmin