[英]PHP not inserting autoincrement field in a MySQL temporary table
我使用以下PHP脚本创建了一个临时表
$query = "CREATE TEMPORARY TABLE people(id int(11) not null auto_increment, first_name varchar(25), second_name varchar(25), primary key(id))";
$q=$pdo->prepare($query);
$q->execute();
然后,我尝试使用以下脚本将数据插入该表
$query2 = "INSERT INTO people(first_name, second_name) VALUES(:firstname,:secondname)";
$q2=$pdo->prepare($query2);
$q2->bindValue(':firstname', $firstname,PDO::PARAM_STR);
$q2->bindValue(':secondname', $secondname,PDO::PARAM_STR);
$q2->execute;
我尝试插入的数据来自另一个表。 最初,这似乎是由基本错误引起的问题,但我无法弄清楚问题出在哪里,因为当我运行此脚本时(请参见下文),我看到所有字段都已创建
$query3 = "DESCRIBE people";
$q3 = $con->prepare($query3);
$q3->execute();
$row = $q3->fetchAll(PDO::FETCH_COLUMN);
print_r($row);
$query2 = "INSERT INTO people(first_name, second_name) VALUES(:firstname,:secondname)";
$q2=$pdo->prepare($query2);
$q2->bindValue(':firstname', $firstname,PDO::PARAM_STR);
$q2->bindValue(':secondname', $secondname,PDO::PARAM_STR);
$q2->execute;
在()
的execute()
方法是丢失。
另外:
如果您试图从另一个表中填充该表,而中间没有其他步骤,则可以直接通过mysql执行此操作:
$query2 = "INSERT INTO people(first_name, second_name)
select firstname, secondname from otherTABLE where something = 'xy'";
$pdo->exec($query2);
直接在数据库中执行此操作将减少php尝试执行相同操作时出错的机会。
您的脚本的其余部分是正确的,我在本地进行了测试:
$pdo = new PDO('mysql:dbname=test;host=127.0.0.1', 'root', '', array(PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC));
$query = "CREATE TEMPORARY TABLE people(id int(11) not null auto_increment, first_name varchar(25), second_name varchar(25), primary key(id))";
$q = $pdo->prepare($query);
$q->execute();
$firstname = 'test';
$secondname = 'what';
$query2 = "INSERT INTO people(first_name, second_name) VALUES(:firstname,:secondname)";
$q2 = $pdo->prepare($query2);
$q2->bindValue(':firstname', $firstname, PDO::PARAM_STR);
$q2->bindValue(':secondname', $secondname, PDO::PARAM_STR);
$q2->execute();
$pdo->exec("INSERT INTO people(first_name, second_name) SELECT 'prename', 'surname'");
$result = $pdo->query('SELECT * FROM people');
echo '<pre>';
var_dump($result->fetchAll());
exit;
显示:
array(2) {
[0]=>
array(3) {
["id"]=>
string(1) "1"
["first_name"]=>
string(4) "test"
["second_name"]=>
string(4) "what"
}
[1]=>
array(3) {
["id"]=>
string(1) "2"
["first_name"]=>
string(7) "prename"
["second_name"]=>
string(7) "surname"
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.