- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试对 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/
我是一名优秀的程序员,十分优秀!