gpt4 book ai didi

php - 是否可以在打开语句时直接通过链接运行 mysqli 查询?

转载 作者:行者123 更新时间:2023-11-30 23:23:39 24 4
gpt4 key购买 nike

我正在尝试对 MySQL 数据库执行一个简单的操作:我的联系人在名为 first_name 的列中有他们的完整姓名,而 last_name 列为空。

所以我想获取 first_name 列上的内容,并在第一次出现空格时将其拆分,并将第一部分放在 first_name 列上,第二部分放在 first_name 列上last_name 列的一部分。

我使用了以下代码,但它不起作用:

$connection = new mysqli(DATABASE_SERVER, DATABASE_USERNAME, DATABASE_PASSWORD, DATABASE_NAME, DATABASE_PORT);

$statement = $connection->prepare("SELECT id, first_name FROM contacts");

$statement->execute();

$statement->bind_result($row->id, $row->firstName);

while ($statement->fetch()) {
$names = separateNames($row->firstName);

$connection->query('UPDATE contacts SET first_name="'.$names[0].'", last_name="'.$names[1].'" WHERE id='.$row->id);
}

$statement->free_result();
$statement->close();

$connection->close();

我可以在打开语句时使用 $connection->query 吗?

最好的问候。

更新

$connection->query(...) 返回 FALSE 并且我收到以下错误:

PHP Fatal error:  Uncaught exception 'Exception' with message 'MySQL Error - 2014 : Commands out of sync; you can't run this command now'

我将代码更改为以下内容并开始工作:

$connection = new mysqli(DATABASE_SERVER, DATABASE_USERNAME, DATABASE_PASSWORD, DATABASE_NAME, DATABASE_PORT);

$result = $connection->query("SELECT id, first_name FROM contacts");

while ($row = $result->fetch_row()) {
$names = separateNames($row[1]);

$connection->query('UPDATE contacts SET first_name="'.$names[0].'", last_name="'.$names[1].'" WHERE id='.$row[0]);
}

$connection->close();

最佳答案

Can I use the $connection->query while having the statement open?

是的。根据 SQL 查询,它将返回一个新的结果对象或一个 bool 值,参见 http://php.net/mysqli_query - 在您运行 UPDATE 查询的情况下,它将始终返回一个 bool 值,如果失败则为 FALSE,如果成功则为 TRUE

顺便说一句,Mysqli connection object不是 Mysqli statement object ,因此它们通常不会相互干扰(在某些情况下,断开连接可能会破坏/破坏某些陈述,但我认为这是您暂时可以忽略的问题的边缘情况)。

我想知道你为什么问这个问题。也许您应该改进解决问题的方式?

关于php - 是否可以在打开语句时直接通过链接运行 mysqli 查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14358748/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com