【问题标题】:How to use a MySQL Query within a PHP function correctly? [closed]如何在 PHP 函数中正确使用 MySQL 查询? [关闭]
【发布时间】:2014-08-17 16:34:31
【问题描述】:

所以我尝试在 PHP 函数中运行 MySQL 查询,但出现错误。

所以目前我有这个:

ob_start();
$mysqli = new mysqli('localhost', 'database', '', 'user');
if ($mysqli->connect_errno) {
    echo 'Connection to database failed!';
    exit;
}
$mysqli->set_charset('utf8mb4');

下面这个:

require_once('function_x.php');

function_x.php 包含:

function doX($variable) {
    global $mysqli;

    $stmt = $mysqli->prepare("SELECT `x` FROM `y` WHERE `z` = ?");
    $stmt->bind_param("s", $variable);
    $stmt->execute();
    $stmt->store_result();
    $stmt->bind_result($db_x);
    if ($stmt->affected_rows = 1) {
       //Do something
    }
}

因此,当不使用此功能时,页面加载时不会发出警告。但是如果我尝试使用它,例如doX('test') 我收到一个致命错误,说 'Fatal error: doX(): Cannot write property in ...'if ($stmt->affected_rows = 1) { 在线。

我无法弄清楚为什么会出现此错误。有什么想法吗?

【问题讨论】:

  • 是否需要在包含你的function_x.php页面的页面中声明全局变量?在包含的页面中将其声明为全局不会导致父级无法访问它吗?如果错了,我很抱歉最近没有做太多 PHP

标签: php mysql function mysqli require


【解决方案1】:

= 用于分配。

== 用于比较。

【讨论】:

  • 哦,天哪……好吧,我觉得自己很笨!谢谢! :p
  • 我们都犯了这个错误。这次你很幸运,因为affected_rows 是 mysqli 语句的只读属性。有些人养成了把常量值放在左边的习惯,比如if (1 = $stmt->affected_rows),所以如果他们输入错误的操作符,他们肯定会出错。
猜你喜欢
  • 2013-08-31
  • 1970-01-01
  • 1970-01-01
  • 2013-11-09
  • 1970-01-01
  • 2020-08-18
  • 1970-01-01
  • 1970-01-01
  • 2014-07-17
相关资源
最近更新 更多