0

MySQLテーブルにjson文字列を保存したい。json 文字列はキャンバスから取得されます (fabricjs を使用)。

var jsonCanvas = JSON.stringify(canvas.toDatalessObject());

私の最初の質問は、json 文字列を MySQL に保存するのに最適なデータ型は何ですか? キャンバスには、テキストやその他のオブジェクトだけでなく、画像も含まれます。MEDIUMTEXT で十分だと思いますか?

もう一つの質問。この準備されたステートメントでjson文字列を保存することは可能ですか? 文字列にキーワード「s」を使用するのは疑わしいです。

try {
  $sql = "insert into layout (lt_author, lt_date, lt_category, lt_json_string)
   values (?,?,?,?)";
  $stmt = $mysqli->prepare($sql);
  $stmt->bind_param("ssss",$lt_author, $lt_date, $lt_category, $lt_json_string);
  $stmt->execute();
  $stmt->close();

助けてくれてありがとう:) あいさつマックス

4

1 に答える 1

0

あなたのSQLは正しいと思います。
私は常にTEXT、キャンバスの json 文字列表現を保存することを選択しました。
ただし、JSON 表現を保存する方法を選択する前に、考慮すべきことがあります。
こちらのディスカッションを参照してください: Fabric.js を使用してキャンバスに JSON をロード
する 観察する必要がある主なポイントが説明されています。

  • .toDatalessObject()代わりに使用する.toJson()方法:
  • - 長所: kangax がディスカッションで説明したように、toDatalessObject は svg の URL ソースのみを保存するため、データベースに保存されるデータが少なくなります。このようにして、おそらく他のタイプを使用してjsonキャンバス表現を保存できます(タイプを使用できるかもしれませんTINYTEXT
    -短所:キャンバスを再度ロードするときに参照するため、サーバーにファイルが必要です。

  • キャンバスにはどれくらいのオブジェクトがありますか? そして、このオブジェクトはどのタイプですか? より多くのSVGまたは画像とテキストですか?
  • .toDatalessJson()メソッドを使用し、さらに多くの svg がキャンバスに読み込まれる場合、この svg はオブジェクトに変換されPathPathGroupデータベースに保存される ため、知っておく必要があります。
    そのため、キャンバスに非常に多くの svg がある場合、最終的な json 文字列がTEXTデータベースの型に許可されているサイズをオーバーフローする可能性があります (この場合、json 文字列表現を分割して 2 つ以上のエントリに保存するなどの解決策があります)。あなたのデータベース)。しかし、これが頻繁に発生する場合は、あなたが示唆するように
    、 のような他のタイプを選択したほうがよいでしょう。MEDIUMTEXT

    于 2013-01-06T20:58:51.310 に答える