উত্তর:
আমি এর জন্য পিডিও বাক্য গঠন জানি না, তবে এটি বেশ সোজা-এগিয়ে বলে মনে হচ্ছে:
$result = mysql_query("SHOW TABLES LIKE 'myTable'");
$tableExists = mysql_num_rows($result) > 0;
mysql_*
, সেগুলি আনুষ্ঠানিকভাবে হ্রাস করা হয় , আর রক্ষণাবেক্ষণ করা হয় না এবং ভবিষ্যতে সরানো হবে । ভবিষ্যতে আপনার প্রকল্পের কার্যকারিতা নিশ্চিত করার জন্য আপনার পিডিও বা মাইএসকিউএলির সাথে আপনার কোডটি আপডেট করা উচিত ।
আপনি যদি মাইএসকিউএল 5.0 এবং তার পরে ব্যবহার করেন তবে আপনি চেষ্টা করতে পারেন:
SELECT COUNT(*)
FROM information_schema.tables
WHERE table_schema = '[database name]'
AND table_name = '[table name]';
কোনও ফলাফল টেবিলের উপস্থিতি নির্দেশ করে।
থেকে: http://www.electrictoolbox.com/check-if-mysql-table-exists/
Mysqli ব্যবহার করে আমি নিম্নলিখিত ফাংশন তৈরি করেছি। ধরে নেওয়া আপনার একটি কনস নামে পরিচিত একটি mysqli উদাহরণ রয়েছে।
function table_exist($table){
global $con;
$table = $con->real_escape_string($table);
$sql = "show tables like '".$table."'";
$res = $con->query($sql);
return ($res->num_rows > 0);
}
আশা করি এটা সাহায্য করবে.
সতর্কতা: @ jcaron দ্বারা সুরক্ষিত হিসাবে এই ফাংশনটি স্ক্লিনেকশন অ্যাটাকের পক্ষে ঝুঁকিপূর্ণ হতে পারে, তাই নিশ্চিত করুন যে আপনার $table
ভার পরিষ্কার আছে বা আরও ভাল প্যারামিটারাইজড কোয়েরি ব্যবহার করুন।
কেউ যদি এই প্রশ্নের সন্ধান করে আসে তবে এটি পোস্ট করা হয়। যদিও এর কিছুটা উত্তর দেওয়া হয়েছে। কিছু উত্তর এটির প্রয়োজনের চেয়ে জটিল করে তুলেছে।
মাইএসকিএল * এর জন্য আমি ব্যবহার করেছি:
if (mysqli_num_rows(
mysqli_query(
$con,"SHOW TABLES LIKE '" . $table . "'")
) > 0
or die ("No table set")
){
পিডিওতে আমি ব্যবহার করেছি:
if ($con->query(
"SHOW TABLES LIKE '" . $table . "'"
)->rowCount() > 0
or die("No table set")
){
এটির সাথে আমি অন্য শর্তটি কেবল তে বা ধাক্কা দিয়েছি। এবং আমার প্রয়োজনের জন্য আমার কেবল মরতে হবে। আপনি সেট করতে পারেন বা অন্যান্য জিনিস। কিছু যদি / অন্যথায় / অন্যথায় পছন্দ করতে পারে। এরপরে যা অপসারণ করা হয় এবং তারপরে / অন্যথায় যদি / অন্যটি সরবরাহ করে।
সঞ্চিত প্রক্রিয়াগুলি ব্যবহার করার সময় আমার সমাধানটি এখানে আমি পছন্দ করি। সারণীটি পরীক্ষা করার জন্য কাস্টম মাইএসকিএল ফাংশন বর্তমান ডাটাবেসে বিদ্যমান।
delimiter $$
CREATE FUNCTION TABLE_EXISTS(_table_name VARCHAR(45))
RETURNS BOOLEAN
DETERMINISTIC READS SQL DATA
BEGIN
DECLARE _exists TINYINT(1) DEFAULT 0;
SELECT COUNT(*) INTO _exists
FROM information_schema.tables
WHERE table_schema = DATABASE()
AND table_name = _table_name;
RETURN _exists;
END$$
SELECT TABLE_EXISTS('you_table_name') as _exists
একটি বৃহত্তর ডাটাবেসগুলিতে "টেবিলগুলি দেখান" ধীর হতে পারে বলে আমি "DESCRIBE" ব্যবহার করার পরামর্শ দিচ্ছি এবং ফলস্বরূপ আপনি সত্য / মিথ্যা পেয়েছেন কিনা তা পরীক্ষা করে দেখুন recommend
$tableExists = mysqli_query("DESCRIBE `myTable`");
$q = "SHOW TABLES";
$res = mysql_query($q, $con);
if ($res)
while ( $row = mysql_fetch_array($res, MYSQL_ASSOC) )
{
foreach( $row as $key => $value )
{
if ( $value = BTABLE ) // BTABLE IS A DEFINED NAME OF TABLE
echo "exist";
else
echo "not exist";
}
}
জেন্ড ফ্রেমওয়ার্ক
public function verifyTablesExists($tablesName)
{
$db = $this->getDefaultAdapter();
$config_db = $db->getConfig();
$sql = "SELECT COUNT(*) FROM information_schema.tables WHERE table_schema = '{$config_db['dbname']}' AND table_name = '{$tablesName}'";
$result = $db->fetchRow($sql);
return $result;
}
যদি এটি করতে চাওয়ার কারণটি হয় শর্তযুক্ত টেবিল তৈরি, তবে 'টেবিল তৈরি করুন যদি উপস্থিত না থাকে' কাজের জন্য আদর্শ বলে মনে হয়। যতক্ষণ না আমি এটি আবিষ্কার করেছি, আমি উপরের 'DESCRIBE' পদ্ধতিটি ব্যবহার করেছি। এখানে আরও তথ্য: মাইএসকিউএল "উপস্থিত না থাকলে টেবিল তৈরি করুন" -> ত্রুটি 1050