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


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.