اذهب إلى المحتوى

السؤال

نشر

ذلك جزء من الكود لمشروع قمت بنشره على استضافة:

public function storeVerify(array $data): SmsMessageRequest
{
    $data["app_id"] = $app_id = request()->header('app_id');
    $data["phones"] = $data["phone"] ? json_encode(array($data["phone"])) : "[]";
    $data["priority"] = "high";
    $data["type"] = "verify";
    $data["message"] = $data["template"];
    $item = new SmsMessageRequest($data);
    $item->save();
    return $item;
}

ويقوم الكود بترميز مصفوفة إلى JSON وتخزينها في قاعدة البيانات، ولكن أحصل على الخطأ:

SQLSTATE[42000]: Syntax error or access violation: 3143 Invalid JSON path expression. The error is around character position 2. (SQL: insert into sms_message_requests (priority, gateway, app_id, phones, type, message, updated_at, created_at) values (high, panel, 0, ["239272044202"], verify, web-auto-beh-verify, 2023-12-21 14:13:43, 2023-12-21 14:13:43))

عندما أقوم بتسجيل البيانات json_encode(array($data["phone"]))، يظهر أن القيمة هي ["239272044202"] ويبدو أنها الطريقة الصحيحة، وإصدارات MySQL و PHP على الاستضافة هي نفسها.

Recommended Posts

  • 0
نشر

قاعدة البيانات لا تدعم ادراج مصفوفة في حقل JSON عليك اولا تحويلها الي JSON ثم ادراجها عليك تغير السطر

    $data["phones"] = $data["phone"] ? json_encode(array($data["phone"])) : "[]";

الي : 

$data["phones"] = json_encode($data["phones"])

و مع ذلك يمكنك استخدام الكود التالي لتحويل المصفوفة الي سلسلة JSON اثناء التشغيل 
 

public function storeVerify(array $data): SmsMessageRequest
{
    $data["app_id"] = $app_id = request()->header('app_id');
    $data["phones"] = $data["phone"] ? array($data["phone"]) : [];
    $data["priority"] = "high";
    $data["type"] = "verify";
    $data["message"] = $data["template"];
    $data["phones"] = json_encode($data["phones"]);
    $item = new SmsMessageRequest($data);
    $item->save();
    return $item;
}

 

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...