-1

我之前在 php 中进行了一个项目,并得到了我正在将数组转换为字符串的通知。我想知道有没有办法绕过通知?

if(isset($_POST['acceptrequest' . $user_from])) {
    $get_friend_check = mysql_query("SELECT friend_array FROM users WHERE username='$user'");
    $get_friend_row = mysql_fetch_assoc($get_friend_check);
    $friend_array = $get_friend_row['friend_array'];
    $friendArray_explode = explode(",",$friend_array);
    echo $friendArray_explode;
}
4

1 回答 1

2

您应该使用另一个 MySQL 驱动程序:MySQLi 或 PDO,因为基本的 MySQL 驱动程序已被弃用并且易受 SQL 注入攻击。

您应该使用准备好的语句来防止 SQL 注入。

$selectFriendsStatement = $pdo->prepare('SELECT friend_array FROM users WHERE username=?');
$selectFriendsStatement->execute(array($user));

代替

$get_friend_check = mysql_query("SELECT friend_array FROM users WHERE username='$user'");

您应该通过变量名称一致地camelCase使用或。所以使用而不是.underscore_case $friend_array_explode$friendArray_explode

您应该在对它进行任何操作之前验证您的 postData。

您应该使用聚合函数,GROUP_CONCAT()并通过 1:n 或 n:m 关系为朋友添加另一个表,而不是将它们存储为数组。

您应该在表名和列名周围添加特殊引号,并且应该为 MySQL 列名添加前缀以避免命名冲突:

`users`.`name`

而不是username.

你应该给出有意义的变量、函数、类名。例如selectFriendsResult,而不是get_friend_check.

当您只想获取单个列时,您应该使用 fetch column,而不是 fetch assoc。

于 2014-06-08T21:26:54.660 回答