2015-07-30 1 views
1

Я искал десятки вопросов с почти идентичным заголовком этого сообщения, но мне еще предстоит найти ответ на мою конкретную проблему , Я пытаюсь подготовить заявление, но я получаю эту ошибку каждый раз. Я думаю, что в моем sql-синтаксисе мне нужна какая-то ошибка, но для жизни я не могу ее найти.MySQL - Неустранимая ошибка: вызов функции-члена bind_param() для не-объекта

$title = "this_is_my_table_title";  

//import the database login credential variables 
require("localhost_credentials.php"); 

$conn = new mysqli($db_servername, $db_username, $db_password, $db_name); 
if($conn->connect_error) 
{ 
    die("Connection failed: " . $conn->connect_error); 
} 

$querystr = "CREATE TABLE ? ("; 
$querystr .= "id int(11) not null auto_increment,"; 
$querystr .= "section varchar(255) not null,"; 
$querystr .= "raw_content LONGTEXT not null,"; 
$querystr .= "formatted_content LONGTEXT not null,"; 
$querystr .= "primary key (id)"; 
$querystr .= ");"; 


$statement = $conn->prepare($querystr); <--- error here 
$statement->bind_param("s", $title); 
$statement->execute(); 
$statement->close(); 
+0

Когда 'prepare' возвращает' false', выполните 'echo $ conn-> error', чтобы увидеть сообщение об ошибке SQL – Barmar

ответ

2

Вы не можете использовать заполнитель для имени таблицы, его можно использовать вместо выражений. Так что CREATE TABLE ? недействителен. Использование:

$querystr = "CREATE TABLE `$title` ("; 

после проверки того, что $title является приемлемым имя таблицы.

+0

А, ладно. Не знал этого, я думал, что смогу использовать заполнители где угодно. Благодаря! Это исправило это. – xcdemon05

+0

Это распространенное недоразумение. – Barmar