답변:
나는 그것에 대한 PDO 구문을 모르지만 이것은 매우 간단합니다.
$result = mysql_query("SHOW TABLES LIKE 'myTable'");
$tableExists = mysql_num_rows($result) > 0;
mysql_*
기능, 그들은되어 공식적으로 사용되지 않는 , 더 이상 유지 될 것입니다 제거 미래에. 향후 프로젝트의 기능을 보장하려면 PDO 또는 MySQLi 로 코드를 업데이트해야합니다 .
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를 사용하여 다음 기능을 만들었습니다. $ con이라는 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에 의해 요청 된대로이 함수는 sqlinjection attacs에 취약 할 수 있으므로 $table
var가 깨끗한 지 확인 하거나 매개 변수화 된 쿼리를 더 잘 사용하십시오.
이 질문을 찾는 사람이 오면 게시됩니다. 조금 대답했지만. 일부 답변은 필요 이상으로 복잡하게 만듭니다.
mysql *의 경우 다음을 사용했습니다.
if (mysqli_num_rows(
mysqli_query(
$con,"SHOW TABLES LIKE '" . $table . "'")
) > 0
or die ("No table set")
){
PDO에서는 다음을 사용했습니다.
if ($con->query(
"SHOW TABLES LIKE '" . $table . "'"
)->rowCount() > 0
or die("No table set")
){
이것으로 나는 else 조건을 또는 안으로 밀어 넣습니다. 그리고 내 필요를 위해서 나는 단지 죽기 만하면됩니다. 설정하거나 다른 일을 할 수 있지만. 일부는 if / else if / else를 선호 할 수 있습니다. 그런 다음 if / else if / else를 제거하거나 제공합니다.
저장 프로 시저를 사용할 때 선호하는 솔루션은 다음과 같습니다. 현재 데이터베이스에 테이블이 있는지 확인하기위한 사용자 정의 mysql 함수.
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
$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";
}
}
Zend 프레임 워크
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;
}
이 작업을 수행하려는 이유가 조건부 테이블 생성 인 경우 'CREATE TABLE IF NOT EXISTS'가 작업에 이상적입니다. 이것을 발견하기 전까지는 위의 'DESCRIBE'방법을 사용했습니다. 여기에 더 많은 정보 : MySQL "CREATE TABLE IF NOT EXISTS"-> Error 1050