php - mysqli 错误和警告

标签 php mysql mysqli

我正在尝试将 mysql 脚本更改为 mysqli 脚本。我尝试了很多不同的事情,但我总是收到此错误/警告:

Warning: Illegal string offset 'npm' in /home/web-stars.nl/www/account/new_pm.php on line 125 
Warning: mysqli_real_escape_string() expects exactly 2 parameters, 1 given in /home/web-stars.nl/www/account/new_pm.php on line 125 
Warning: Illegal string offset 'recipid' in /home/web-stars.nl/www/account/new_pm.php on line 126

在我的脚本的这一部分中存在错误:

$dn1 =  'SELECT count(id) as recip, id as recipid, (select count(*) from pm) as npm from users where username="'.$recip.'"';
$id = mysqli_real_escape_string(mysqli_query($link, $dn1['npm']+1));
$sql = 'insert into pm (id, id2, title, user1, user2, message, timestamp, user1read, user2read)values("'.$id.'", 1, "'.$title.'", "'.$_SESSION['userid'].'", "'.$dn1['recipid'].'", "'.$message.'", "'.time().'", "yes", "no")';

有人知道如何更改脚本以使错误消失吗?这个脚本对我来说非常重要!

最佳答案

$dn1 是一个字符串(php 代码的第一行),因此 $dn1['npm'] 没有任何意义。这是第一条错误消息。

然后第二条错误消息说它需要 2 个参数,因为您的第二个参数 ($dn1['npm']) 不正确。

第三个错误消息与第一个错误消息具有相同的来源。

您可能想要使用 $dn1 获取您编写的查询的结果。您需要使用 PDO 或其他 sql 驱动程序来请求您的数据库。仅 SQL 字符串不会给出任何结果。

关于php - mysqli 错误和警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31144071/

相关文章:

php - 多项选择 - 保存结果

python - 无法让 MySQLDb 在 Mac 上的 python 中工作还有其他更简单的数据库吗?

mysql - 按年/月选择显示

phpMyAdmin - 错误 : (The mysqli extension is missing) after upgrading php 5. 6 到 php 7

php - 查询未发送到数据库

php - Eloquent:根据表关系计算行数

php - 尝试找出 PHP PDO 准备好的语句和占位符。 MySQL语句的 "IN"子句中的占位符

php - 如何在 Laravel (PHP) 中从今天开始获得 10 天的 future 日期

mysql - 将十六进制值插入mysql

php - 尝试将下拉列表中的数据作为外键插入另一个表中。未插入数据