亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在數據庫中增加字段時遇到問題

在數據庫中增加字段時遇到問題

PHP
慕姐8265434 2022-01-24 09:58:25
我已經建立了一個充滿電影的數據庫,該數據庫連接到一個 HTML 表單,其中的信息通過 PHP POST 移植(充當電影數據庫)。當用戶輸入搜索詞(標題、流派、年份或分類)時,PHP 腳本 search.php 會收到信息。這很好,但是,我的數據庫中還有一個名為 times_searched 的列,其默認值為零。我覺得最大的問題之一是我盯著這個文件太久了,現在對我來說一些簡單的東西并不明顯。一般來說,我對 PHP 和 WebDev 很陌生。我嘗試發出第二條語句以在 TableRow 類的 foreach 循環內執行,并嘗試了不同的語法并嘗試將以前的語句綁定到新語句。class TableRows extends RecursiveIteratorIterator{    function __construct($it)     {        parent::__construct($it, self::LEAVES_ONLY);    }    function current()     {        return "<td style='width:150px;border:1px solid black;'>" .         parent::current()."</td>";    }    function beginChildren()     {        echo "<tr>";    }    function endChildren()     {        echo "</tr>" . "\n";    }}function printAssocArray($stmt){    foreach (new TableRows(new RecursiveArrayIterator($stmt->fetchAll()))             as $k=>$v) {                    echo $v;    }}require 'Templates/header.php';//DB variables$serverName = "localhost";$userName = "root";$password = "";//Post variables$title = ($_POST['title']);$year = ($_POST['year']);$genre = ($_POST['genre']);$rating = ($_POST['rating']);if (isset($_POST['submit'])) {    try {            //Create PDO object using DB variables            $conn = new PDO(                "mysql:host=$serverName;dbname=project_db", $userName, $password            );            //Set PDO error mode to exception            $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);            echo "<h3 class='center'>Connection Successful!</h3>";        }目的是嘗試從數據庫返回請求的查詢,然后在使用 TableRow 類打印之前增加 times_searched 列,這應該在每次運行查詢時發生(如果刷新頁面,則 times_searched 列應該增加)這被用于完成家庭作業項目,安全性不是一個必要的因素(盡管要求使用 PDO)。
查看完整描述

1 回答

?
慕后森

TA貢獻1802條經驗 獲得超5個贊

您的查詢應該使用WHERE id = :id(單個電影項目)或WHERE id IN (SELECT id FROM movies WHERE title LIKE '%$title%')(多個電影項目),不能同時使用,也不能用;.


我假設你想使用后者(更新多個電影項目),改變


$stmt = $conn->prepare(

                    "UPDATE movies SET 

                times_searched = times_searched + 1 WHERE id = :id; 

                IN (SELECT * FROM movies WHERE title LIKE '%$title%'"

                ); 

                $result = $stmt->setFetchMode(PDO::FETCH_ASSOC);

                $stmt->bindValue(':id', $result['id']);

                $stmt->execute();


$stmt = $conn->prepare("UPDATE movies SET times_searched = times_searched + 1 WHERE id IN (SELECT id FROM movies WHERE title LIKE :title)"); 

$stmt->bindValue(':title',"%{$title}%");

$stmt->execute();

對于// New Block部分:


代替


$outputQuery = "SELECT * FROM movies WHERE title LIKE '%title%'";

$stmt2 = $conn->prepare($outputQuery);

$stmt2->bindValue('title', $title);


$outputQuery = "SELECT * FROM movies WHERE title LIKE :title";

$stmt2 = $conn->prepare($outputQuery);

$stmt2->bindValue(':title', "%{$title}%");


查看完整回答
反對 回復 2022-01-24
  • 1 回答
  • 0 關注
  • 235 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號