فشل الخلية الاستعلام على سلامة انتهاك القيد

StackOverflow https://stackoverflow.com/questions/624774

  •  05-07-2019
  •  | 
  •  

سؤال

ويحتفظ هذا الاستعلام فشل مع

<اقتباس فقرة>   

والنزاهة انتهاك القيد: 1048 العمود 'LOGIN_NAME "لا يمكن أن تكون لاغية

وبيان إدراج بلدي ...

    $insertUserQuery = 'INSERT INTO `users` (
                    `login_name`,
                    `password`, 
                    `first_name`,
                    `last_name`,
                    `company_name`,
                    `company_address`,
                    `country`,
                    `email`,
                    `phone_number`,
                    `agency_type`,
                    `sold_before`,
                    `authorised`,
                    `current_module`
                    )
                    VALUES (
                   :login_name, :login_password, :first_name, :last_name, :company_name, :company_address, :country, :email, :phone_number, :agency_type, :sold_before, 0, 0);';

    $bindings = array(':login_name'      => $loginName,
                      ':login_password'  => sha1($password . Config::PASSWORD_SALT),
                      ':first_name'      => $firstName,
                      ':last_name'       => $lastName,
                      ':company_name'    => $companyName,
                      ':company_address' => $companyAddress,
                      ':country'         => $country,
                      ':email'           => $emailAddress,
                      ':phone_number'     => $phone,
                      ':agency_type'     => null,
                      ':sold_before' => null  
                      );

print_r($bindings);                 

    Db::query($insertUserQuery, $bindings);

ويمكن الاطلاع على الطبقة قاعدة البيانات الخاصة بي <لأ href = "https://stackoverflow.com/questions/617646/is-this-wrapper-for-pdo-good-code-are-there-any-potential-problems" > في سؤال آخر . وprint_r() يقول لي أن مجموعة بالتأكيد له قيمة.

قد كان لها أن تفعل شيئا معي استخدام كلمة 'كلمة السر' الذي هو أيضا وظيفة الخلية؟

أعدت

هل يدعم PDO البيانات مع INSERT بنفس الطريقة كما هو الحال مع SELECT؟

هل أنا بحاجة إلى أن أقتبس حول القيم، مثلا ': LOGIN_NAME'

هل كانت مفيدة؟

المحلول

ولا يدعم PDO::query جملة بيان معد يفعل ذلك؟ العطاء شركة تنمية نفط عمان :: إعداد و <لأ href = "HTTP: / /us.php.net/manual/en/pdostatement.execute.php "يختلط =" نوفولو noreferrer "> PDOStatement :: تنفيذ للقراءة. وربما كنت تريد شيئا مثل:

$insertUserQuery = 'INSERT INTO `users` (`login_name`, ...) ' .
    'VALUES (:login_name, ...);';
$bindings = array(':login_name' => $loginName, ...);
$stmt = Db::prepare($insertUserQuery);
$stmt->execute($bindings);

ويمكنك أيضا استدعاء $stmt->bindValue() بدلا من بناء مجموعة من الارتباطات. أعتقد أن ملزم صراحة كل قيمة أجمل قليلا حيث يمكنك التحقق من أنواع هناك.

وتحرير: آسف jcinacio، لم أكن أرى أن تعليقك كان متطابقة تقريبا حتى بعد أن نشرت

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top