我知道你们中的一些人可能不同意这一点,但这样做很好。下面你会找到我的两张桌子。
表Item
pid Name
1 cat
2 dogs
3 cows
表Category
CatID pid Name
11 1 banana
33 1 apple
44 2 strawberry
基本上我有一个Select选项,该选项可能类似于
下面的选项<option selected="" value="33">apple</option>
现在,如果我要将value
更改为letter
或number
或保留blank
value=""
然后我点击我的提交按钮。
在我发布的页面中我有
if(isset($_POST['pid']) && isset($_POST['length']) && isset($_POST['Qty']) && isset($_POST['Category'])){
$pid = $_POST['pid'];
$length = $_POST['length'];
$qty = $_POST['Qty'];
$Category = $_POST['Category'];
$wasFound = false;
<-I have a query here ->
<-I have another if statement here which should run if everything is okay ->
}
&lt;我在这里有一个查询 - &gt; 这就是我的问题所在
我有一个单独的查询,该查询应随数据库一起更改,以验证用户发布的内容是否在数据库中。这通常是为了确保用户没有做过他们不应该做的事情。
dbconnect();
$statement = $db->prepare("
SELECT * FROM Category WHERE CatID =:Cat
LIMIT 1
");
$statement->bindParam('Cat',$Category);
$statement->execute();
$statement->fetchAll(PDO::FETCH_ASSOC);
if ($statement->rowCount() > 0) {
exit();
}
当我更改了值时,我已经运行了查询,并且即使我没有更改任何内容,也没有证明该项目已添加到购物车BUT
,但它仍无效。 I do not get an error
答案 0 :(得分:0)
我想就行了
if ($statement->rowCount() > 0)
你的意思是&lt; 0.退出如果rowCount&gt; 0表示如果在数据库中找到WAS类别则退出。如果没找到,我想你想退出。
您应该至少通知他们选择的用户和无效类别。
答案 1 :(得分:0)
首先,按照tag wiki中的说明设置dbconnect()
。
其次,让你的代码更加一致
dbconnect();
$statement = $db->prepare("SELECT * FROM Category WHERE CatID = ?");
$statement->execute(array($Category));
if (!$statement->fetch()) {
exit();
}
对于您的表单,您可以使用更智能的方法(我相信,为此我们发明了命名占位符):
$sql = "SELECT * FROM Category WHERE CatID = :Category AND pid = :pid
AND length = :length AND qty = :qty";
$statement = $db->prepare($sql);
unset($_POST['submit']); // get rid of all extra fields in POST
$statement->execute($_POST); // and then pass it in execute()
if (!$statement->fetch()) {
exit();
}
为了在代码中找到一些不一致的地方,添加一些调试输出