我正在尝试将 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/