我有一个MySQL数据库,我想使用PDO connect从PHP表单插入数据。
有没有办法让Javascript警报弹出;
我正在使用此代码;
$dbo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$category = $_REQUEST['category'];
$sql = "INSERT INTO category (category) SELECT * FROM (SELECT '".$category."') AS tmp WHERE NOT EXISTS (SELECT category FROM category WHERE category = '".$category."') LIMIT 1;";
$sql = $dbo->prepare($sql);
$sql ->execute(
array(
':category'=>$category
)
);
感谢你帮助一个新手(我找了一个现有的答案,但似乎没什么好看的。)
答案 0 :(得分:2)
->rowCount()
检查受影响的行:
$sql = "INSERT INTO category (category) SELECT * FROM (SELECT '".$category."') AS tmp WHERE NOT EXISTS (SELECT category FROM category WHERE category = '".$category."') LIMIT 1;";
$stmt = $dbo->prepare($sql);
$stmt->execute(array(':category'=>$category));
if($stmt->rowCount() > 0) {
// inserted
echo '<script>alert("Insert Complete!");</script>';
} else {
// did not insert
echo '<script>alert("Record already exists!");</script>';
}
根据您的代码现在的设置方式,这是最接近您可以提醒您插入状态的信息。
当然,如果您使用ajax实际请求此插入,您只需使用布尔值进行响应,然后通过ajax的成功块将其呈现在客户端上。
答案 1 :(得分:0)
$dbo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$category = $_REQUEST['category'];
$sql = "INSERT INTO category (category) SELECT * FROM (SELECT '".$category."') AS tmp WHERE NOT EXISTS (SELECT category FROM category WHERE category = '".$category."') LIMIT 1;";
$sql = $dbo->prepare($sql);
try {
$sql ->execute(
array(
':category'=>$category
)
);
catch(Exception $ex) {
print_r($ex);
}
由于您已将字段上的约束添加为唯一,并要求PDO处理异常错误,因此PDO应在尝试插入数据时引发异常(如果数据已在DB中)。
而不是print_r()
,您可以echo "alert('My error message');"
答案 2 :(得分:0)
示例,这需要转换为PDO来回答问题。
// $link = mysqli_connect blah blah
function check_exist($link, $cat) {
$query = "SELECT `category` FROM `category` WHERE `category` = '$cat'";
$result = mysqli_query($link, $query) or die(mysqli_query($link));
$row = mysqli_fetch_num($result);
if(count($row) >= 1) {
<script>alert('Row already exists!');
} else {
insert_record($link, $cat); //fire the insert function
<script>alert('New record added!');
}
}
function insert_record($link, $cat) {
$cat = mysqli_real_escape_string($link, $cat);
$query = "INSERT INTO `category` (`category`) VALUES ('$category')";
mysqli_query($link, $query) or die(mysqli_query($link));
}