我想显示数据输入已经存在 array
<?php
if(isset($_POST["med_nom"]))
{
$connect = new PDO("mysql:host=localhost;dbname=dbs", "", "password");
for($count = 0; $count < count($_POST["med_nom"]); $count++)
{
$query = "INSERT INTO medicinetbl (med_dorder, med_id, med_nom, med_qty, med_prc) VALUES (:med_dorder, :med_id, :med_nom, :med_qty, :med_prc)";
$statement = $connect->prepare($query);
$statement->execute(
array(
':med_dorder' => $_POST["med_dorder"][$count],
':med_id' => $_POST["med_id"][$count],
':med_nom' => $_POST["med_nom"][$count],
':med_qty' => $_POST["med_qty"][$count],
':med_prc' => $_POST["med_prc"][$count]
)
);
}
$result = $statement->fetchAll();
if(isset($result))
{
echo 'ok';
}
}
?>
回答1
这就是我在 table 中检查重复行 ID 的方式:
# Generate random Row ID
$rid = rand(1000, 9999);
# start query (yours will be different as I have a class created for starting
# connections with PDO; nonetheless, you should still understand what im doing here)
$query_ridcheck = $db->connect->prepare("SELECT * FROM `table` WHERE rid=:rid");
$query_ridcheck->bindValue(':rid', $rid, PDO::PARAM_STR);
$query_ridcheck->execute();
# if it fetches any data back (while searching for the newly created $rid),
# then generate another random $rid again and check again. This while loop will
# keep going until it DOESN"T fetch any data back (meaning the random $rid has
# not been taken already).
while($query_ridcheck->fetch(PDO::FETCH_ASSOC)){
$rid = rand(1000, 9999);
$query_ridcheck = $db->connect->prepare("SELECT * FROM `table` WHERE rid=:rid");
$query_ridcheck->bindValue(':rid', $rid, PDO::PARAM_STR);
$query_ridcheck->execute();
}
本质上,您可以在插入之前检查重复数据,然后选择要执行的操作。我选择重新生成数据并再次检查,直到我得到一个不重复的字符串/整数。
在此检查之后,我继续使用该行 ID 将数据插入到 table 中(因为我现在知道它不会被占用)
或者像@Your_Common_Sense 亲切地指出的那样,您也可以执行相同的功能,而不是重复代码:
# executes at lease once, then checks if the condition
# is true; If it is, continue looping until it's false.
do{
$rid = rand(1000, 9999);
$query_ridcheck = $db->connect->prepare("SELECT * FROM `table` WHERE rid=:rid");
$query_ridcheck->bindValue(':rid', $rid, PDO::PARAM_STR);
$query_ridcheck->execute();
}while($query_ridcheck->fetch(PDO::FETCH_ASSOC));
回答2
您应该在您的数据中搜索您不想重复的 values,如果有带有 values 的记录,请不要插入。