-1

私はPHPが初めてで、いくつかのコードを整理しています。これは 2 つの電話番号リストを取得しています…次に、最初のリストから 2 番目のリストの番号を引き出して、新しいフィルタリングされたリストを作成します。1 つのリストを取得するだけで、コード全体が正常に機能しました。2 番目のリストに基づいてリストをフィルター処理するように変更したので、コードが失敗し、次の警告が表示されます。

警告: 7 行目の /var/www/html/send.php の不正な文字列オフセット 'phone_number'

    // Get all of the phone numbers from the List
$sql = "SELECT phone_number FROM dial_list WHERE list_id='$list'";
$result = mysqli_query($link, $sql);
echo mysqli_error($link);
foreach ($result as $row) 
    {
      $all_people[] = $row['phone_number'];
    }

// Get phone numbers from our DNC list
$sql = "SELECT phone_number FROM dial_dnc";
$result = mysqli_query($link, $sql);
echo mysqli_error($link);

    foreach ($result as $row) 
    {
      $dnc_people[] = $row['phone_number'];
    }

// Remove DNC numbers from list
$filtered_people = array_diff($all_people, $dnc_people);
    foreach ($filtered_people as $row)
    {
      $people[] = $row['phone_number'];
    }

行 79 (警告の元) は次のとおりです。 $people[] = $row['phone_number'];

このフィルタリングを実行する方法のエラーまたは改善を特定するための助けをいただければ幸いです。

4

4 に答える 4

2

fetch結果セットの結果を忘れました

foreach ($result as $row) {

する必要があります

while ($row = mysqli_fetch_assoc($result)) {
于 2013-09-13T07:23:48.270 に答える
2

これは、mysql だけで簡単に実行できます。

SELECT 
dl.phone_number 
FROM dial_list AS dl 
INNER JOIN dial_dnc as dnc 
ON (dl.phone_number = dnc.phone_number)
WHERE list_id='$list'
于 2013-09-13T07:24:30.387 に答える
1

あなた$resultは配列ではなく、トラバース可能なオブジェクトです。ドキュメントに見られるように

失敗すると FALSE を返します。SELECT、SHOW、DESCRIBE、または EXPLAIN クエリが成功した場合、mysqli_query() はmysqli_resultオブジェクトを返します。その他の成功したクエリの場合、mysqli_query() は TRUE を返します。

2 つの異なる方法で結果をループできます。

// precedural style
while ($row = mysqli_fetch_assoc($result)) { ... }
// OOP style
while($row = $result->fetch_assoc()) { ... }
于 2013-09-13T07:25:32.247 に答える
0

$all_peopleand$dnc_peopleでを割り当てるので$row['phone_number']、キーはなく、おそらく数字でキー付けされています$filtered_peoplephone_number試す

foreach($filtered_people as $key => $value)
{
    $people[] = $value;
}
于 2013-09-13T07:25:16.840 に答える