#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.