我有一个表单,其目的是将当前显示的记录放入一个类别中。我通过 php 使用以下 html 代码来执行此操作:
<form name="categoryForm">
<input name="radiobutton" type="radio" value="fakeapproved" />Fake (Approved)<p>
<input name="radiobutton" type="radio" value="fakesuspected" />Fake (Suspected)<p>
<input name="radiobutton" type="radio" value="keyword" />Forbidden Keywords<p>
<input name="radiobutton" type="radio" value="parallelimport" />Parallel Imports
<input name="Submit" type="submit" value="Update" onclick="handleClick(".$pk.");return false"/>
</form>
目前,我只有一个 AUCTIONS 表,其中有一个类别列,并且此列设置为我的表单中定义的类别之一。
这种方法对于我需要对数据执行的操作无效,因此我计划将其更改为每个类别都有一个单独的列,可以将其设置为 true 或 false。
我想知道的是,是否可以在我的 sql 查询中使用在我的表单中定义并通过我的 javascript 函数获得的文本。
例如,更新拍卖集 $textfromfrom = true
目前,我正在使用以下准备好的语句:
if($cmd=="addcat"){
$alterQuery = "UPDATE auctions SET category = ? WHERE article_no= ?";
if ($altRecord = $con->prepare($alterQuery)) {
$altRecord->bind_param("ss", $subcat, $pk);
$altRecord->execute();
$altRecord->close();
echo "true";
} else {
echo "false";
}
}
有没有办法替换
$alterQuery = "UPDATE auctions SET category = ? WHERE article_no= ?";
与 $alterQuery = "UPDATE auctions SET ?= true WHERE article_no= ?";
是否也可以直接执行单独的查询,即:
if($cmd=="addcat"){
$alterQuery = "UPDATE auctions SET ? = true WHERE article_no= ?";
$insertQuery = "INSERT into users (username, ?) values ?, true";
if ($altRecord = $con->prepare($alterQuery)) {
$altRecord->bind_param("ss", $category, $pk);
$altRecord->execute();
if ($insRecord = $con->prepare($insertQuery)) {
$insRecord->bind_param("ss", $category, $username);
$insRecord->execute();
$insRecord->close();
}
$altRecord->close();
echo "true";
} else {
echo "false";
}
我使用上述方法的原因如下:
拍卖数据库是从其他来源导入的,我根本无法更改结构,只能在末尾添加类别。不得更改主键等。
只有4类
单个拍卖可能属于多个类别
拍卖表只处理拍卖。我需要一个用户表,其中主要包含新用户输入。
用户表必须能够为每个用户显示他们参与拍卖的类别。
每个用户在用户表中的记录不能超过一条。用户名将作为主键。
最佳答案
哎呀,经典的数据库非规范化即将发生。你不想这样做。您希望将其保留在一个单独的列中,或者,正如看起来需要的那样,在拍卖和类型之间创建一对多的关系。出现问题的第一个迹象是没有简单的途径来完成您想要做的事情。
更好的方法是创建一个拍卖表和一个 categoryAuctionForm 表...
它看起来像:
auctions Table:
auction_id
---------
0
1
2
3
auctions Type:
auction_type_id auction_id auction_type
1 0 something
2 0 othertype
3 0 fake
4 1 othertype
5 2 fake
6 3 fake
您还可以添加更多级别的规范化,例如创建 auction_type 列。
只是我的想法。
关于php - mysql准备语句参数和排序查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/746075/