thinkphp データベース挿入操作エラー

WBOY
リリース: 2016-06-23 14:16:43
オリジナル
1451 人が閲覧しました

thinkphp MySQL データベース

thinkphp は Excel からデータを読み取り、それを mysql に挿入します。生成された SQL ステートメントは正しく、実行時には
$model->execute($sql) を使用します。各文字列が挿入されます。生成された SQL ステートメントは、insert into table names('','ABCDEF') のようなものです。完全なリストは示されていませんが、thinkphp で単独で実行すると、挿入は成功します。文字列ABCDEF。 tp で最後に実行された SQL ステートメントを出力するのも正しいです

ディスカッション (解決策) への返信

直接実行しても同じ結果が得られますか? 最初はデータベースのフィールドの型と長さの制限だと思いました。直接実行した場合も同じです。次に、TP の最後の mysql_query をトレースし、mysql_query の前に $sql をチェックする必要があります

直接実行しても同じ結果が得られますか? 最初はデータベースのフィールドのタイプと長さの制限だと思いました。直接実行の場合も同様の場合は、TP をトレースする必要があります。最後に、mysql_query の前の $sql がローカル検査です。詳しく教えていただけますか。ありがとうございます


直接実行しても同じ結果が得られますか? 最初はデータベースフィールドのタイプと長さの制限だと思っていましたが、直接実行で同じであれば、TP の最後の mysql_query をトレースして $sql を確認する必要があります。 mysql_query の前に
詳細を教えていただけますか?ありがとうございます

実際には、もっと詳しく説明する必要があります

解決できない「超自然的な問題」はありません、どこかに問題があるはずです

私の謙虚な意見では、TP の SQL ステートメントの処理に問題があるか、または mysql データ構造/型に問題があります。他の可能性は考えられません

そこで、まず SQL ステートメントを手動で作成し、mysql で直接実行してみてください。結果を見てください。挿入後の結果は何ですか?

手動挿入の結果が正しい場合は、TP フレームワーク内の SQL を出力します。この時点でステートメントを作成して、手書きの SQL ステートメントと一致しているかどうかを確認してください。

その後、詳しく見てみることができます。その理由をすぐに説明します

実際には、それを詳しく説明する必要があります

$res = $order_insert- >execute($sql);
echo $ order_insert->getLastSql();
executeを実行するときは、$sqlをコピーして個別に実行すると、目的の結果が得られます。実行が完了したら、$order_insert->getLastSql(); を使用して、最後に実行された SQL ステートメントを取得します。SQL 文字列を直接コピーして実行する場合も、データは正常に挿入されます。パラメータとして実行した場合、上記の状況が発生した場合

パラメータとして実行する場合の $order_insert->getLastSql() も見てみてはいかがでしょうか


$res = $order_insert->execute($ sql);
echo $order_insert->getLastSql();
実行する場合は、$sql をコピーして個別に実行すると、目的の結果が得られます。実行が完了したら、$order_insert->getLastSql(); を使用して、最後に実行された SQL ステートメントを取得します。SQL 文字列を直接コピーして実行する場合も、データは正常に挿入されます。パラメータとして実行した場合、上記の状況が発生した場合

パラメータとして実行する場合の $order_insert->getLastSql() も見てみてはいかがでしょうか

私が見たのは、アセンブルされた SQL です。ステートメントは実行するパラメーターとして使用され、実行後に最後に実行された SQL ステートメントを取得し、完全な SQL ステートメントを出力します。 insert into table value('','ABCDEF'); ただし、文字 A が 1 つだけ挿入されます。文字 ABCDEF に対応するデータベース テーブル

これはデータベースのフィールドの問題でしょうか? mysql で SQL を直接実行した場合でも問題は発生しますか?

これはデータベースのフィールドの問題でしょうか? mysql で SQL を直接実行した場合でも問題は発生しますか?

フィールドの問題ではなく、直接挿入するのが正常です。

Excel を読み取るときに、setOutputEncoding を追加する必要があることが判明しました。
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート