У меня есть база данных MySQL, в которую я хотел бы вставить данные из формы PHP, используя PDO connect.
Есть ли способ получить всплывающее окно предупреждения 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
)
);
Спасибо за помощь новичку (я искал существующий ответ, но ничего не казалось достойным одобрения).
На самом деле это довольно просто. Просто проверьте поврежденные строки через ->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.
$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 должен вызвать исключение при попытке вставить данные, если они уже находятся в БД.
Вместо print_r()
ты можешь сделать echo "alert('My error message');"
Например, это необходимо преобразовать в 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));
}