簡體   English   中英

PDO 查詢不返回任何內容

[英]PDO query returns nothing

我的查詢有問題,它什么都不返回。

  if($champ == "type_id")       
            {
                $bdd = new PDO("mysql:dbname=maruecondi_db;host=localhost","root","");
                $request = $bdd->prepare('SELECT * FROM type_commercant WHERE type=:old');
                $request->execute(array(':old' => $old));
                while($row = $request->fetch())
                {
                    $bdd1 = new PDO("mysql:dbname=maruecondi_db;host=localhost","root","");
                    $request1 = $bdd1->prepare('UPDATE commercant SET type_id=:type_id WHERE id=:id');
                    $request1->execute(array(':type_id' => $row['id'],':id' => $id));
                }
            }

我從 ajax 請求 (JQUERY) 中獲取變量並且我之前初始化它們,我避免你的代碼。 頁面上的其他請求有效。 由於 ajax 調用,我目前無法查看是否有問題。 (沒有php橙色框/pdo消息)我試圖解決問題,我發現我們進入了if。 我刪除了包含 while 的第一個查詢,我用一個值替換了 $row['id'] ,然后我工作了。 從一開始,我一直將連接復制並粘貼到我的數據庫,所以沒問題。

所以我的問題在這里:

                $request = $bdd->prepare('SELECT * FROM type_commercant WHERE type=:old');
                $request->execute(array(':old' => $old));
                while($row = $request->fetch())

我看不出我做錯了什么...

 $request = $bdd->prepare('SELECT * FROM type_commercant');
                $request->execute();
                while($row = $request->fetch())

這有效,所以我嘗試了這個:

                    $request = $bdd->prepare('SELECT * FROM type_commercant');
                $request->execute();
                while($row = $request->fetch())
                {
                    if($row['type'] == $old)
                    {
                        $request1 = $bdd->prepare('UPDATE commercant SET type_id=:type_id WHERE id=:id');
                        $request1->execute(array(':type_id' => $row['id'],':id' => $id));
                    }

                }

我們不進入條件 if($row['type'] == $old),但我刪除了這個條件,當我用這樣的東西替換時:

while($row = $request->fetch())
                {
                        $request1 = $bdd->prepare('UPDATE commercant SET adresse=:type_id WHERE id=:id');
                        $request1->execute(array(':type_id' => $row['id'],':id' => $id));
                 }

它有效......我檢查了 $row['type'], $row['id'], $old in array(':type_id' => $row['id'], all variables got the string attented. 所以有什么問題?提前致謝!

嗯,怎么說呢……

我正在用我自己解釋的舊數據更新數據:

$bdd = new PDO("mysql:dbname=maruecondi_db;host=localhost","root","");
            $request = $bdd->prepare('SELECT id FROM type_commercant WHERE type=:old');
            $request->execute(array(':old' => $old));

正在從 type_commercant 獲取舊 ID,我正在這樣做:

 $request1 = $bdd1->prepare('UPDATE commercant SET type_id=:type_id WHERE id=:id');
                $request1->execute(array(':type_id' => $row['id'],':id' => $id));

所以我用......舊ID替換了舊ID。

抱歉這個錯誤,無論如何感謝你閱讀我並嘗試解決這個問題:D

嘗試調用PDO::exec()進行UPDATEDELETE

$bdd = new PDO("mysql:dbname=maruecondi_db;host=localhost","root","");

if($champ == "type_id")       
{
    $stmt = $bdd->prepare('SELECT * FROM type_commercant WHERE type=:old');
    $stmt->execute(array(':old' => $old));
    $rows = $stmt->fetchAll(); 
    // Uncomment this to know what you get
    // var_dump($rows);
    foreach ( $rows as $row ) {
        $bdd->exec(
            "UPDATE commercant
                SET type_id = " . $bdd->quote($row['id']) .
            " WHERE id = " . $bdd->quote($id)
        );
    }
}

您可以使用此代碼進行調試。

var_dump( $bdd->errorInfo() );

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM