Всегда они рекомендовали меня PDO
на MySQLI
, на которое мне хотелось бы менять мою связь во время ввождения данных во мне DB
. Уже я использую PDO
чтобы показывать данные клиенту.
Я использовал PDO
следующей формы, он вводит мне данные правильно, но дает мне else в:
if ($conn->query($sql) == TRUE)
<?php
$conn = null;
$host = '*******';
$db = '*******';
$user = '*******';
$pwd = '*******';
try {
$conn = new PDO('mysql:host='.$host.';dbname='.$db, $user, $pwd);
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$sql = "INSERT INTO avisos (.......) VALUES (...........)";
if ($conn->query($sql) === TRUE) {
echo "<script type='text/javascript'>
window.location='https://*******';
</script>";
} else {
echo "Error: " . $sql . "<br>" . $conn->error;
}
$conn->close();
}
catch (PDOException $e) {
echo 'Excepción capturada: ', $e->getMessage(), "\n";
exit;
}
return $conn;
?>
Несколько вещей errГіneas в тебе cГіdigo, он ощущается, что остаются в Г©l реминисценции mysqli
:
connect_error
. AdemГЎs, ошибки conexiГіn справляются в catch
, не случайно ты соединяешь внутри одного try
INSERT, UPDATE, DELETE
convendrГ - в mГЎs хорошо возвращать количество поврежденных линий используя rowCount()
вместо того, чтобы проверять то, что возвращает query
, который является объектом PDOStatement [ видеть раздел возвращенных типа Стоимости в doc ] . error
. Ошибки подбирают посредством mГ©todo errorInfo()
, в котором, ГЛАЗЕ, он возвращает array. И, ГЛАЗ, так она conexiГіn как statement у них есть этот mГ©todo. AquГ - он называется mГ©todo statement. Применяясь выше сказанное, ты cГіdigo podrГ, - чтобы оставаться asГ-:
<?php
$conn = null;
$host = '*******';
$db = '*******';
$user = '*******';
$pwd = '*******';
try {
$conn = new PDO('mysql:host='.$host.';dbname='.$db, $user, $pwd);
$sql = "INSERT INTO avisos (.......) VALUES (...........)";
if ( $stmt = $conn->query($sql) ) {
$info = sprintf( "Se insertaron %d filas",$stmt->rowCount() );
#Usar $info en la salida si quieres
echo "<script type='text/javascript'>
window.location='https://*******';
</script>";
} else {
# errorInfo() devuelve un array y en el mensaje está en el índice 2
echo "Error: " . $sql . "<br>" . $stmt->errorInfo()[2];
}
$conn->close();
}
catch (PDOException $e) {
echo 'Excepción capturada: ', $e->getMessage(), "\n";
}
?>
я исправил другие вещи, как снимание return
объекта conexiГіn. Он не имеет смысл, ademГЎs, ты закрываешь ее внутри try
. Я снял призывы к свойствам, которые не существуют. И, старайся предотвращать exit()
и die()
. Лучше контролировать cГіdigo и о том, чтобы возвратить переменные с нею informaciГіn, когда он будет необходим.