我已经有几天了。起初我认为问题在于绑定参数,但我已经简化回基本的mysqli页面,仍然无法找到错误。我将此前搜索页面中其中一行的密钥传递到此页面,以便我可以显示所选项目的更多详细信息。
我添加了一个echo来测试正确打印的isset,同时它将Key放入URL中。如果我遗漏了WHERE Key =' $ Key'它打印出整个数据集。如果我用$ Key替换$ row [' Key'],它会打印整个数据集,但每行都会显示所选的键。
这告诉我它正确传递了键并且打印功能正确。我尝试过使用WHERE Key = $ _GET [' Key']以及$ Key但都没有工作。我必须在这里做一些基本错误的事情,但经过三天尝试我能想到的代码的每一个变化,我没有更多的想法。
<?php
$mysqli = new mysqli('localhost','user','password','database');
if ($mysqli->connect_error) {
die('Error : ('. $mysqli->connect_errno .') '. $mysqli->connect_error);
}
if(isset($_GET['Key'])){
$Key = $_GET['Key'];
echo "Got it";
}else{
echo "No input";
}
$results = $mysqli->query("SELECT * FROM engravers WHERE Key ='$Key'");
$img_url = "http://www.xxxxx.net/images/";
print '<table border="1" >';
while($row = $results->fetch_assoc()) {
print '<tr>';
print '<td>'.$row["Key"].'</td>';
print '<td>'.$row["Country"].'</td>';
print '<td>'.$row["Year"].'</td>';
print '<td>'.$row["Description"].'</td>';
print '<td>'.$row["Engraver1Surname"].'</td>';
print '<td>'.$row["Designer1Surname"].'</td>';
print '<td>'.$row["Printer"].'</td>';
print '<td>'.'<img src="'.$img_url.$row['Images'].'" />'.'</td>';
print '</tr>';
}
print '</table>';
$results->free();
$mysqli->close();
?>
</body>
答案 0 :(得分:1)
您应该避免使用许多SQL列名。请阅读:http://technet.microsoft.com/en-us/library/ms189822.aspx
相同的保留关键字在MySQL中。
如果你使用其中一个只用``
覆盖它$results = $mysqli->query("SELECT * FROM `engravers` WHERE `Key`='$Key'");
答案 1 :(得分:0)
在您的查询中,您使用的是不允许的列key
,因为这是一个保留的关键字。
答案 2 :(得分:0)
伙计,你已经在使用mysqli,为什么还在查询中插入变量?这是将字符串$ Key传递给解析器的方法
$results = $mysqli->prepare("SELECT * FROM engravers WHERE `Key`= ?");
$results->bind_param("s", $Key);
while($row = $results->fetch_assoc()) {
... stuff ...
}
如果这不起作用,我确定不是因为准备好的陈述是问题。
PD:key是保留字,因此请注意字段名称包含在反引号中。