কোডাইনিটার মডেলে এসকিউএল স্টেটমেন্ট কীভাবে প্রিন্ট করা যায়


107

আমার মডেলটিতে আমার একটি বর্গ স্টেটমেন্ট রয়েছে,

আমি তখন বলি

$query = $this->db->query($sql, array(fields, fields1);

if ($query) {
    return true:
} else {
    echo "failed";
    return false;
}

আমার জিজ্ঞাসা সর্বদা ব্যর্থ হয়, আমি কীভাবে পিএইচপি পেতে পারি আমার সঠিক ডাটাবেসে প্রেরণ করা ঠিক এসকিএল স্টেটমেন্ট? এবং এটি আমার পিএইচপি ভিউ, পৃষ্ঠায় প্রদর্শন করুন

উত্তর:


124

ক্যোয়ারী স্ট্রিং প্রদর্শন করতে:

print_r($this->db->last_query());    

ক্যোয়ারির ফলাফল প্রদর্শন করতে:

print_r($query);

প্রোফাইলার ক্লাসটি আপনার পৃষ্ঠাগুলির নীচে বেঞ্চমার্ক ফলাফল, আপনার দ্বারা চালিত ক্যোয়ারী এবং $ _POST ডেটা প্রদর্শন করবে। প্রোফাইলার সক্ষম করতে আপনার নিয়ামক পদ্ধতির মধ্যে যে কোনও জায়গায় নিম্নলিখিত লাইনটি রাখুন:

$this->output->enable_profiler(TRUE);

প্রোফাইলিং ব্যবহারকারী গাইড: https://www.codeigniter.com/user_guide/general/profiling.html


7
যখন আমি মুদ্রণ_আর করি ($ কোয়েরি); কিছুই প্রিন্ট আউট
— টেকনুপ

1
প্রোফাইলারটিতে নির্মিত সিআই ব্যবহার করুন, আরও তথ্য এখানে
— নভো

2
আমি যা করতে চাই তা হল ডেটাবেজে পাস করার সাথে সাথে এসকিএল স্টেটমেন্টটি প্রিন্ট করে ফেলতে হবে, তবে প্রোফাইলার খুব একটা সহায়তা করছে না
— টেকনুপ

আমি পোস্ট করা ব্যবহারকারীর গাইড লিঙ্কটি দেখুন, যদি এটি কাজ না করে তবে তার পরিবর্তে কী ঘটে তা আমাদের জানান।
— নভো

আমি আমার সমস্যাটি বুঝতে পেরেছি, ওরাকল আমার তারিখের ফর্ম্যাটটি গ্রহণ করছে না, iv আমার মনে হয় এমন প্রতিটি ফর্ম্যাট চেষ্টা করেছে, এটি কেবলমাত্র SYSDATE- কে গ্রহণ করবে
— টেকনোপ


41

আপনি অ্যাক্টিভেকর্ড উত্পাদিত এসকিউএল প্রদর্শন করতে পারেন:

ক্যোয়ারি চালানোর আগে:

$this->db->_compile_select(); 

এবং এটি চালানোর পরে:

$this->db->last_query(); 

4
যখন আমি $ এটি-> ডিবি -> _ সংকলন_-নির্বাচন () ব্যবহার করি; আমি মারাত্মক ত্রুটি পেয়েছি: সুরক্ষিত পদ্ধতিতে কল করুন সিআই_ডিবি_একটিভ_রেকর্ড :: _ সংকলন_-নির্বাচন করুন () থেকে
— অ্যাঞ্জেলিন নাদার

প্রোফাইলার জিনিসটি আমার পক্ষে ভাল নয়, আমি যে ক্যোয়ারী চাইছি তা দেখায় না, এটি কেবল এসকিউএল পাওয়ার জন্য জটিল ... এটি আমার জন্য কাজ করে: - প্রতিধ্বনি $ এটি-> ইই-> ডিবি -> _ সংকলন_-নির্বাচন ();
— লরেন্স কোপ

3
সিআই 3-তে, $this->db->get_compiled_select()পরিবর্তে ব্যবহার করুন।
— নিক

17

আপনার কোয়েরিতে যদি আপনার দ্রুত পরীক্ষার প্রয়োজন হয় তবে এটি আমার পক্ষে দুর্দান্ত কাজ করে

echo $this->db->last_query(); die;

14

সাফল্য ব্যবহার না করে চেষ্টা করার পরে _compiled_select()বা get_compiled_select()আমি কেবল dbবস্তুটি মুদ্রণ করেছি এবং আপনি queriesসম্পত্তিটিতে কোয়েরিটি দেখতে পাচ্ছেন ।

এটি নিজে চেষ্টা করো:

var_dump( $this->db );

আপনি যদি জানেন যে আপনার কাছে কেবল একটি প্রশ্ন রয়েছে তবে আপনি এটি সরাসরি মুদ্রণ করতে পারেন:

echo $this->db->queries[0];

9

একটি নতুন পাবলিক পদ্ধতি রয়েছে get_compiled_selectযা ক্যোয়ারী চালানোর আগে মুদ্রণ করতে পারে। _compile_selectএখন সুরক্ষিত তাই ব্যবহার করা যায় না।

echo $this->db->get_compiled_select(); // before $this->db->get();

4
মারাত্মক ত্রুটি: অপরিজ্ঞাত পদ্ধতিতে কল করুন সিআই_ডিবি_মাইএসকিএল_ড্রাইভার :: get_compiled_select ()
— ইটকাওসার


2

না হয় last_query()বা get_compiled_select()আমার পক্ষে কাজ করে না, তাই পেড্রোর কোডের একটি সামান্য পরিবর্তন আমার পক্ষে ঠিক কাজ করে। ->get()আপনার বিল্ডে অন্তর্ভুক্ত করবেন না , এটি অবশ্যই -> পান () এর আগে হওয়া উচিত

 echo $this->EE->db->_compile_select();

1

আমি @ চুমিলাসের উত্তর এবং @ ছামেদ এর উত্তর চেষ্টা করার চেষ্টা করি, তবে এটি কার্যকর হয় না, কারণ স্কেলটি ভুল wrong তাই আমি নতুন পদ্ধতির সন্ধান পেয়েছি, এরকম:

  • এর ফাংশনের echo $sql; flush(); exit;আগে sertোকানreturn $sql; _compile_selectDB_active_rec.php

0

আপনি যে মুদ্রণটি মুদ্রণ করতে চান তার ঠিক পরে এই লাইনটি যুক্ত করুন।

উদাহরণ:

$ ক্যোয়ারী = $ এটি-> ডিবি-> ক্যোয়ারী ('টেবিল থেকে * নির্বাচন করুন যেখানে অবস্থা');

// এই লাইন যুক্ত করুন।

, var_dump ($ this-> db-> last_query ());

থেকে প্রস্থান ();

অথবা

প্রতিধ্বনি $ এটি-> ডিবি-> লাস্ট_কোয়ারি ();


0

আমি সম্পর্কিত এক্সটেনশান এবং সিআই v2.x সহ ভিএসকোডে এই মানগুলি দেখার জন্য xdebug ব্যবহার করছি। আমি $this->db->last_query()ঘড়ির অংশে xdebugSettingsএক্সপ্রেসন যুক্ত করেছি এবং লঞ্চ.জসনে অ ট্রান্সকেট মান না পাওয়ার জন্য আমি এই লাইনের মতো নোড যুক্ত করব।

{
  "name": "Launch currently open script",
  "type": "php",
  "request": "launch",
  "program": "${file}",
  "cwd": "${fileDirname}",
  "port": 9000,
  "xdebugSettings": {
    "max_data": -1,
    "max_children": -1
  }
},

এবং ব্রেকআপপয়েন্ট দিয়ে আমার ডিবাগারটি চালান এবং অবশেষে কেবল আমার এক্সপ্রেশনটি নির্বাচন করুন এবং ডান> কপি মানটি ক্লিক করুন।


-1

আমার ঠিক একই সমস্যা ছিল এবং শেষ পর্যন্ত সমাধানটি খুঁজে পেয়েছি। আমার জিজ্ঞাসাটি এইভাবে চলে:

$result = mysqli_query($link,'SELECT * FROM clients WHERE ' . $sql_where . ' AND ' . $sql_where2 . ' ORDER BY acconame ASC ');

এসকিএল কমান্ডটি প্রদর্শনের জন্য, আমাকে যা করতে হয়েছিল তা হ'ল আমার ক্যোয়ারির মতো ঠিক একই বিষয়বস্তু সহ একটি ভেরিয়েবল ($ ফলাফলস্রিত) তৈরি করা এবং তারপরে এটি প্রতিধ্বনি করুন:<?php echo $resultstring = 'SELECT * FROM clients WHERE ' . $sql_where . ' AND ' . $sql_where2 . ' ORDER BY acconame ASC '; ?>

এটি কাজ করে!


এটি কোডআইগনিটার উপায় নয়।
— মিকম্যাকুসা 21

-1

get_compiled_select()এটির পরিবর্তে কোয়েরি পুনরুদ্ধার করতে ব্যবহার করুন


আমি এই নির্দিষ্ট ক্ষেত্রে আপনি প্রস্তাবিত ফাংশনটি কীভাবে ব্যবহার করবেন তা প্রদর্শন করার পরামর্শ দেব, কেবল এটি উল্লেখ না করে। শুভেচ্ছা
— YakovL

-2

আমি এখানে সমস্ত উত্তর পড়ি, কিন্তু পেতে পারি না

echo $this->db->get_compiled_select();

কাজ করতে, এটি আমার মতো ত্রুটি দিয়েছে,

সুরক্ষিত পদ্ধতিতে কল করুন সিআই_ডিবি_একটিভ_রেকর্ড :: _ লাইন এক্সএক্স-এ 'ওয়েলকাম'-এর নিয়ন্ত্রক প্রসঙ্গ থেকে সংকলন_-নির্বাচন করুন ()

সুতরাং আমি protectedনীচের লাইনটি ফাইল থেকে সরিয়েছি \system\database\DB_active_rec.phpএবং এটি কার্যকর হয়েছে

protected function _compile_select($select_override = FALSE)
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.