PHP初心者です。syntax error, unexpectedについて
PHP初心者です。現在PHPでSQliteを動かすプログラムを勉強しているのですが、「syntax error, unexpected T_ELSE」が出てきて困っています。
「SQLite入門」という書籍に書いてある通りに打ち込んでいるのですが、下のプログラムの■の部分でエラーが出ています。
何が原因なのでしょうか?知恵をお貸しください。
<?php
//データ取得
$act = (isset($_POST["act"])) ? $_POST["act"] : "";
$id = (isset($_REQUEST["id"])) ? intval($_RIQUEST["id"]) : "";
$contents = (isset($_POST["contents"])) ? $_POST["contents"] : "";
$title = (isset($_POST["title"])) ? $_POST["title"] : "(無題)";
$dt = date("y-m-d H:i:s");
//データベース初期設定
$conn = init();
//処理分岐
if($act == "保存" and $contents <> ""){ //保存
if(empty($id)){ //新規保存
$id = add_data($conn, $title, $contents, $dt);
}else{ //既存データ保存
update_data($conn, $id, $title, $contents, $dt);
}
}elseif($act == "選択したデータを削除"){ //削除
if(isset($_POST["c1"]));{
delete_data($conn, $_POST["c1"]);
}else{ ■ここ
echo "削除するデータが選択されていませんよ";
}
}elseif($act == "全データ削除"){ //全データ削除
delete_data($conn);
}elseif(act == "新規作成"){ //新規作成
clear_data();
}elseif(!empty($id)){ //編集
$row = get_data($conn, $id);
$title = $row["title"];
$contents = $row["contents"];
}
//データベースの初期化
function init(){
//データベースに接続
$conn = new PDD("sqlite:memo.sqlite");
//データベースの作成
$sql = "CREATE TABLE IF NOT EXISTS memo(
id INTEGER PRIMARY KEY AUTOINCREMENT,
tilte TEXT NOT NULL,
contents TEXT NOT NULL,
dt TEXT NOT NULL
)";
$stmt = $conn->prepare($sql);
$stmt->execute89;
return $conn;
}
//データの追加
function add_data($conn, $title, $contents, $dt){
$sql = "INSERT INTO memo(title, contents, dt)
VALUES(:title, :contents, :dt)";
$stme = $conn->prepare($sql);
$stmt->bindParam(":title", $title);
$stmt->bindParam(":contents", $contents);
$stmt->bindParam(":dt", $dt);
$stmt->execute();
$id = $conn->lastInsertId();
return $id;
}
//データ追加
function update_data($conn, $id, $title, $contents, $dt){
$sql = "UPDATE memo SET
title = :title,
contents = :contents,dt = :dt
WHERE id = :id";
$stmt = $conn->prepare($sql);
$stmt->bindParam(":id", $id);
$stmt->bindParam(":title", $title);
$stmt->bindParam(":contents", $contents);
$stmt->bindParam(":dt", $dt);
$stmt->execute();
}
//指定データ削除
function delete_data($conn, $data){
$sql = "DELETE FROM memo WHERE (id = :id)";
$stmt = $conn->prepare($sql);
for($i = 0; $i < count($data); $i++){
$stmt->bindParam(":id", $data[$i]);
$stmt->execyte();
}
clear_data();
}
//全データ削除
function delete_all_data($conn{
$sql = "DELETE FROM memo";
$stmt = $conn->prepare($sql);
$stmt->execute();
clear_data();
}
//データのクリア
function clear_data(){
global $id, $title, $contents;
$id = "";
$title = "(無題)";
$contents = "";
}
//編集データの取得
function get_date($conn, $id){
$sql = "SELECT * FROM memo WHERE id = :id";
$stmt = $conn->prepare($sql);
$stmt = bindParam(":id", $id);
$stmt = execute();
$row = $stmt->fetch(PDD::FETCH_ASSOC);
return $row;
}
?>
お礼
はい、自分でもその様に解決しました。 (1)PHPから「select del_password from bbs where post_id = XXXX」というSQLを実行し、パスワードを取得 (2)PHP上で入力されたパスワードが(1)のパスワードと同じか、もしくは管理者用の特別な番号であるかチェック(DB上のパスワードが空白の場合は入力されたパスワードと同じでも消させない) (3)削除すべき場合は「delete from bbs where post_id=XXX」を実行 ということで、なるべくSQLはシンプルにし、判断処理はPHP上で実行することで回避しました。 今回はループの中で呼ばれる処理でもないし、これで解決とし、どうしても複雑なSQLを記述する必要にせまられたら、その時考慮することにします。 ありがとうございました。