验证和数据添加到db表

时间:2015-07-27 12:58:22

标签: php mysql pdo

我之前提出的问题 pdo to retrieve data and populate a record是关于输入掩码现在我需要验证用户输入并添加输入到db表的内容,这是最后一步。

我的错误就是您在下面的代码中看到我使用 PDO 误解了 INSERT INTO UPDATE SET

此外,就INSERT INTO而言,我使用bindParam来尝试数据输入,而UPDATE SET使用execute(array)。事实上,这段代码验证了用户数据输入以及该输入是否正确,php尝试连接到db并应插入或更新表。奇怪的是,没有返回错误,也没有添加数据



<?php
error_reporting(-1);
ini_set('display_errors', 'On');
?>
<?php
$servername = "xxx";
$username = "xx";
$password = "xxx";
$dbname = "xxxx";

try {
    $dbh = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
    // set the PDO error mode to exception
    $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
	echo 'Connected to database<br />';
    }
catch(PDOException $e)
    {
    echo "Connection failed: " . $e->getMessage();
    }
	$sth = $dbh->prepare("use accessibilita");
?>
<?php
switch ($_GET['action']) {
case 'add':
switch ($_GET['type']) {
case 'tages':
    $error = array();
    $nome = isset($_POST['nome']) ?
        trim($_POST['nome']) : '';
    if (empty($nome)) {
        $error[] = urlencode('Si prega di inserire un nome.');
    }
    $cognome = isset($_POST['cognome']) ?
        trim($_POST['cognome']) : '';
    if (empty($cognome)) {
        $error[] = urlencode('Si prega di inserire un cognome.');
    }
    $indirizzo = isset($_POST['indirizzo']) ?
        trim($_POST['indirizzo']) : '';
    if (empty($indirizzo)) {
        $error[] = urlencode('Si prega di inserire un indirizzo.');
    }
    $civico = isset($_POST['civico']) ?
        trim($_POST['civico']) : '';
    if (empty($civico)) {
        $error[] = urlencode('Si prega di inserire un numero civico.');
    }
	$citta = isset($_POST['citta']) ?
        trim($_POST['citta']) : '';
    if (empty($citta)) {
        $error[] = urlencode('Si prega di inserire una citta valida.');
    }
    $prov = isset($_POST['prov']) ?
        trim($_POST['prov']) : '';
    if (empty($prov)) {
        $error[] = urlencode('Si prega di inserire una provincia.');
    }
    if (empty($error)) {
        $stmt = $dbh->prepare("INSERT INTO tagesroma(nome, cognome, indirizzo, civico, citta, prov)
            VALUES (:nome, :cognome, :indirizzo, :civico, :citta, :prov)");
			$stmt->bindParam(':nome', $nome);
			$stmt->bindParam(':cognome', $cognome);
			$stmt->bindParam(':indirizzo', $indirizzo);
			$stmt->bindParam(':civico', $civico);
			$stmt->bindParam(':citta', $citta);
			$stmt->bindParam(':prov', $prov);
    } else {
      header('Location:tages.php?action=add' .
          '&error=' . join($error, urlencode('<br/>')));
    }
    break;
}
break;
case 'edit':
switch ($_GET['type']) {
case 'tages':
    $error = array();
    $nome = isset($_POST['nome']) ?
        trim($_POST['nome']) : '';
    if (empty($nome)) {
        $error[] = urlencode('Si prega di inserire un nome.');
    }
    $cognome = isset($_POST['cognome']) ?
        trim($_POST['cognome']) : '';
    if (empty($cognome)) {
        $error[] = urlencode('Si prega di inserire un cognome.');
    }
    $indirizzo = isset($_POST['indirizzo']) ?
        trim($_POST['indirizzo']) : '';
    if (empty($indirizzo)) {
        $error[] = urlencode('Si prega di inserire un indirizzo.');
    }
    $civico = isset($_POST['civico']) ?
        trim($_POST['civico']) : '';
    if (empty($civico)) {
        $error[] = urlencode('Si prega di inserire un numero civico.');
    }
	$citta = isset($_POST['citta']) ?
        trim($_POST['citta']) : '';
    if (empty($citta)) {
        $error[] = urlencode('Si prega di inserire una citta valida.');
    }
    $prov = isset($_POST['prov']) ?
        trim($_POST['prov']) : '';
    if (empty($prov)) {
        $error[] = urlencode('Si prega di inserire una provincia.');
    }
    if (empty($error)) {
     //SYNTAX ERROR CORRECTION 
      $stmt = $dbh->prepare("UPDATE tagesroma SET nome=?, cognome=?, indirizzo=?, civico=?, citta=?, prov=?)");
	  $stmt->execute(array($nome, $cognome, $indirizzo, $civico, $citta, $prov));	
    } else {
      header('Location:tages.php?action=edit&id=' . $_POST['id'] .
          '&error=' . join($error, urlencode('<br/>')));
    }
    break;
}
break;
}
?>

<html>
 <head>
  <title>Commit</title>
  <meta charset="UTF-8">
 </head>
 <body>
  <p>Done!</p>
 </body>
</html>
&#13;
&#13;
&#13;

更新/编辑:

我确实更正了UPDATE SET部分,但仍然没有添加数据

1 个答案:

答案 0 :(得分:1)

这里的问题是你从未执行过INSERT

将其添加到其中:

$stmt -> execute();

这就是没有错误返回的原因,因为没有错误;只是#34;缺少&#34; ; - )

参考: