في PHP يفعل PDO :: PDOStatement-> bindParam) العمل (كما هو متوقع؟

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

  •  22-07-2019
  •  | 
  •  

سؤال

وأنا أحاول من شركة تنمية نفط عمان في PHP لأول مرة. وأعتقد أن PDOStatement-> bindParam () سيكون وسيلة باردة لتحديد أنواع البيانات من القيم التي كنت تمر في لاستعلام SQL. ولكن ما هو لا يعمل بالنسبة لي. على سبيل المثال أنا وضعت نوع متغير لإدارة النزاهة المؤسسية في الدعوة bindParam. لكنه لا يزال يتم لا خطأ رمي حتى عندما أمرر قيم السلسلة نقية لذلك. ربما أنا أفعل شيئا خاطئا. هنا هو قصاصة من رمز ..

$query = "select * from PDO_TABLE where A_COLUMN = :test1 or B_COLUMN = :test2";

$test1 = '0';
$test2 = 'a';
$preparedStatement = $conn->prepare($query);

echo $preparedStatement->bindParam(':test1', $test1, PDO::PARAM_INT);
echo $preparedStatement->bindParam(':test2', $test2, PDO::PARAM_INT);

$preparedStatement->execute();

وأفعل كل شيء بشكل صحيح؟ أليس من المفترض أن رمي خطأ لTEST2 المعلمة؟

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

المحلول

سوف

وشركة تنمية نفط عمان لا بطرح استثناء أو رفع خطأ ولكن في أحسن الأحوال تحويل المعلمة إلى عدد صحيح / منذ فترة طويلة. مثلا في pdo_stmt.c:

if (PDO_PARAM_TYPE(param->param_type) == PDO_PARAM_INT && Z_TYPE_P(param->parameter) == IS_BOOL) {
  convert_to_long(param->parameter);
}

وأي بمعنى. إذا كنت قد سجلت معلمة كما PDO_INT لكن يحمل المتغير لشركة تنمية نفط عمان منطقية تحويل منطقي إلى int / منذ فترة طويلة.

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