0

PHP PDOを使用して、テーブルの値を挿入および更新しています。挿入は正常に機能します。しかし、更新しようとしても何も起こりません。エラーも例外もありません。

コードは

   $sql="UPDATE customers SET Name=:name,Company=:company,Address=:address,City=:city,State=:state,Country=:country,MainP=:phonem,CellP=:phonec,Email=:email,Action=:action WHERE CompanyID=:cid";

そして残り:

               $stmt = $dbh->prepare($sql);
                 $stmt->bindParam(":name",$name);
                $stmt->bindParam(":company",$company);
                $stmt->bindParam(":cid",$customer_id);
                $stmt->bindParam(":address",$address);
                $stmt->bindParam(":city",$city);
                $stmt->bindParam(":state",$state);
                $stmt->bindParam(":country",$country);
                $stmt->bindParam(":phonem",$main_num);
                $stmt->bindParam(":phonec",$cell_num);
                $stmt->bindParam(":email",$email);
            $stmt->bindParam(":action",$action);
            $stmt->execute();
           echo $stmt->rowCount();

それで、私が間違っていることはありますか?

編集:行数が0になっていることを忘れてしまいました。引用符なしで試しました。それでも動作しません

編集:customer_idが他の関数から0として返されていることがわかりました。助けてくれてありがとう。

4

4 に答える 4

3

引用符を取り出します、field =:field

$sql="UPDATE customers SET Name = :name, Company = :company, Address  = :address, City = :city, State= :state, Country = :country, MainP = :phonem, CellP = :phonec, Email = :email, Action = :action WHERE Name = :name";

また、アクションは保護されている可能性があります、あなたはそれを「

最後に、名前をwhere句と同じ値に設定していますが、これは不適切です。主キーを使用してください。

2つの理由、1つは、希望する行が更新されないこと、2つ目は、他の誰かがその名前を持っている場合、その行の他の値を更新することです。

于 2012-06-21T13:51:09.233 に答える
1

PDO変数を一重引用符で囲む必要はないと思います(例-:name、:companyなど)

于 2012-06-21T13:51:22.373 に答える
1

値で更新しているため、クエリは失敗します:name。値は、実際には設定しようとしている新しい値です。したがって、更新する行が見つかりません。これを修正するには、where句を変更してを使用する必要があります:old_name

また、フィールドの代わりに、使用可能な場合は主キーと数字を使用することをお勧めしますname

于 2012-06-21T13:51:40.423 に答える
0

クエリで更新できるデータがない可能性があります。クエリで名前などの文字列を使用する場合は、安全のためにlikeと%を指定してみてください(挿入時に注意しないと空のスペースがある可能性があります)

WHERE Name like '%name%";
于 2012-06-21T13:58:47.597 に答える