PHP ссылается на ключевое значение в индексе

#php #mysql #arrays #smarty

#php #mysql #массивы #умный

Вопрос:

Эй, у меня есть массив «количеств» из моей формы:

 <tr>
                            <td class="col1"> Products </td>
                            <td class="col2">

                                <!-- Interests is an array of all interests in the database-->
                                {foreach $products as $product}
                                <select name="quantities[]" id ="quantities">
                                        {section name=quantities start=0 loop=$product.stock   1 step=1}
                                        <option value="{$smarty.section.quantities.index}">{$smarty.section.quantities.index}</option>
                                        {/section}
                                </select>
                                {$product.name}<br>
                                {/foreach}
                            </td>
                        </tr>
  

Это передается в метод:

 function add_order($customer, $delivery_address, $quantities)
{
    $connection = mysql_open();
    $customer = mysql_escape_string($customer);
    $delivery_address = mysql_escape_string($delivery_address);

    $query = "insert into SEOrders (name, address, status) " .
             "values ('$customer', '$delivery_address', 'New')";
    $result = mysql_query($query, $connection) or show_error();

    $id = mysql_insert_id();

    $products = get_products();

    for ($i = 0; $i < count($products); $i  )
    {
        if ($quantities[$i] > 0)
        {
            $product_id = $products[$i]['id'];
            $quantity = $quantities[$i];

            $query2 = "insert into SEOrder_items (order_id, product_id, quantity) " .
                    "values ($id, $product_id, $quantity)";
            $result2 = mysql_query($query2, $connection) or show_error();
        }
    }

    mysql_close($connection) or show_error();
    return $id;
}
  

Затем я получаю сообщение об ошибке в этой строке:

 $query2 = "insert into SEOrder_items (order_id, product_id, quantity) " .
             "values ('$id', '$product_id', '$quantity')";
            $result2 = mysql_query($query, $connection) or show_error();
  

Ошибка заключается в:

 Warning: mysql_query(): 4 is not a valid MySQL-Link resource in /net/SE/includes/defs.php on line 49 Error : 
  

Кто-нибудь знает, что может быть не так?

Комментарии:

1. $connection не является допустимым ресурсом подключения. Проверьте свою mysql_open() функцию

2. @deceze: «Синглтон» для подключения к mysql? 😉

3. что там в mysql_open(). Я предполагаю, что он не возвращает ссылку на db

4. @zerkms return 4; // randomly chosen by dice roll ? ;o)

5. @deceze: lol )) / я отключен mod_telepathy

Ответ №1:

вы должны использовать

$connection = mysql_connect('localhost', 'mysql_user', 'mysql_password');

не

$connection = mysql_open();

Комментарии:

1. Это работает точно так же. mysql_open() — это функция, определенная в другом файле. Насколько я знаю, это делается для обеспечения доступа к базе данных.

2. функция mysql_open() { $connection = @ mysql_connect(ХОСТ, ПОЛЬЗОВАТЕЛЬ, ПАРОЛЬ) или die(«Не удалось подключиться»); mysql_select_db(БАЗА ДАННЫХ, $connection) или show_error(); возвращает $connection; } БАЗА ДАННЫХ, ХОСТ, ПОЛЬЗОВАТЕЛЬ и ПАРОЛЬ определены в отдельном файле PHP.