【问题标题】:SELECT * FROM WHERE Query isn't retrieving any resultsSELECT * FROM WHERE 查询未检索到任何结果
【发布时间】:2015-06-15 20:03:39
【问题描述】:

我正在使用SELECT * FROM "" WHERE "" = "" 查询,但我不确定我做错了什么。我正在尝试根据它的 PO 选择一个项目,它是表中一行的完全唯一标识符。这是我这样做的过程:

$jobnumber = $_GET['jref'];
$query = "SELECT * FROM `po_10152796` WHERE `po` = " .$jobnumber;
$results = mysqli_query($conn,$query) or die(mysqli_error($conn));
$rowitem = mysqli_fetch_array($results);
    $jobname = $rowitem['Job Name'];
    $phone = $rowitem['phone'];

我知道的都是正确的:

  • “jobnumber”被正确检索并与表中的元素匹配
  • 表名为“po_10152796”,有一列名为“po”

【问题讨论】:

  • 您容易受到sql injection attacks 的攻击。不返回结果的查询是 NOT 错误。这是一个完全有效的结果集,恰好是空的。
  • 这是一个逻辑错误,这是我要解决的问题。
  • echo $query; 向您展示了什么?也许您的查询格式不正确,或者您没有引用字符串值。附言请使用准备好的语句。
  • 例如显示“SELECT * FROM po_10152796 WHERE po = 1”
  • 这可能有点远,但是如果$conn 不是正确的连接变量怎么办?

标签: mysql select mysqli fetch


【解决方案1】:

忘记发布这个,用准备好的语句重新编写代码,它可以工作,不确定我到底改变了什么,但无论如何都是这样:

    $jobnumber = $_GET['jref'];
$stmt = $conn->prepare( "SELECT `Job Name`, `Address`, `phone`, `description`, `materials` FROM po_10152796 WHERE po = ?");
$stmt->bind_param("i", $jobnumber);
if($stmt->execute()){
    $stmt->bind_result($jobname, $address, $phone, $description, $materials);
    $stmt->fetch();
}

【讨论】:

    【解决方案2】:

    试试这一行的查询

    $query = "SELECT * FROM `po_10152796` WHERE `po` = '" .$jobnumber. "' ";
    

    【讨论】:

    • 那没有用。如果是字符串错误,则查询将失败并被or die() 捕获
    猜你喜欢
    • 1970-01-01
    • 2010-11-03
    • 1970-01-01
    • 1970-01-01
    • 2019-06-26
    • 1970-01-01
    • 2023-03-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多