Reputation: 55
what the following is supposed to do , is grab the title of the table we want to create from an HTML form, for now I hard coded the value of that ... But even with a hard coded value i'm getting the following error . Connected to database Fatal error: Call to a member function execute() on a non-object in 'filepath'.php on line 44
<?php
// Configuration
$hostname = 'host';
$username = 'user';
$password = 'pass';
$database = 'dbname';
$table = $_Post['table'];
try {
$conn = new PDO('mysql:host='. $hostname .';dbname='. $database, $username, $password);
echo "Connected to database"; // check for connection
echo $table;
// We get the connected to database message....
$conn->exec("SET CHARACTER SET utf8"); // Sets encoding UTF-8
// table A is going to be a var , but for now testing with a hardcoded value
$sql = "CREATE TABLE tableA (
id int(8) ,
Question varchar(170),
AnswerA varchar(100),
AnswerB varchar(100),
AnswerC varchar(100),
AnswerD varchar(100),
A int(8),
B int (8),
C int (8) ,
D int (8)
) CHARACTER SET utf8 COLLATE utf8_general_ci";
$sqlb = "INSERT INTO `DBNAME` tableA (`id`, `Question`, `AnswerA`, `AnswerB`, `AnswerC`, `AnswerD`, `A`, `B`, `C`, `D`)
VALUES ('1', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
('2', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
('3', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
('4', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
('5', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
('6', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
('7', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
('8', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
('9', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
('10', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL)";
// lets not do it all at once eh , run a secound script to add in all the values
$sql->execute();
$sqlb->execute();
// if($conn->exec($sql) !== false) echo 'The sites table is created';
//if($conn->exec($sqlb) !== false) echo 'We inserted some values !';
}
catch(PDOException $e)
{
echo $e->getMessage();
}
// }
// write code to check if we succeded in creating a table with with $, if so display an alert of of some kind
// with Javascript ....
// disabled the redirect so i could see the error message
//header ("Location: quizsubmit.html");
/* Make sure that code below does not get executed when we redirect. */
exit ;
?>
Upvotes: 1
Views: 13259
Reputation: 1751
I had the same error...
I was selecting a table that didn't exist. My error.
Upvotes: 0
Reputation: 3982
As says above you can call prepare that returns PDOStatement
and then call execute or just call exec
for PDO object.
1)
$stmt = $conn->prepare($sql);
$stmtb = $conn->prepare($sqlb);
$stmt->execute();
$stmtb->execute();
2)
$pdoObj = new PDO('mysql:host='. $hostname .';dbname='. $database, $username, $password);
$pdoObj->exec($sql);
Upvotes: 0
Reputation: 160833
You are calling ->execute()
on a string, how should it work?
You need to use prepare()
method to create a statement object.
Upvotes: 0
Reputation: 169008
The $sql
and $sqlb
variables contain strings, not PHP objects. They don't have an execute()
method.
You need to prepare the queries first, then you can execute the resulting statement object:
$stmt = $conn->prepare($sql);
$stmtb = $conn->prepare($sqlb);
$stmt->execute();
$stmtb->execute();
Upvotes: 7