1

Тема: Mysql

Доброго дня! Скажіть будь ласка, чи правильною буде конструкція?

mysql_query(......) OR mysql_query(......);

2

Re: Mysql

Так.
Звісно, вона, можливо, буде робити зовсім не те, що ви хотіли, але з точки зору синтаксису - жодних проблем тут нема.

3

Re: Mysql

Так. Якщо перший mysql_query поверне false,то виконається другий.

4

Re: Mysql

Взагалі-то якщо у вас база не відвалюється і сам SQL правильний, що воно завжди мало би бути тру.

5

Re: Mysql

У кожного своє розуміння фрази "правильний". Для  мене ця конструкція не правильна!

6

Re: Mysql

funivan написав:

У кожного своє розуміння фрази "правильний". Для  мене ця конструкція не правильна!

Навіть у варіантах

mysql_query('UPDATE ...') OR mysql_query('INSERT ... INTO `log_table`');

чи

mysql_query('...', $old_server) OR mysql_query('...', $new_server);

?

7

Re: Mysql

Ну інтерпритатор не матюкнеться, значить правильна?
Хоча, стоп, в php нема оператора OR.
Значить не правильна конструкція

8

Re: Mysql

Як це немає оператора or???

Koala особисто для мене такі варіанти незручні)

9

Re: Mysql

Ось, я написав такий код:

CREATE TABLE IF NOT EXISTS `users_online` (
  `users_online-id` int(11) NOT NULL AUTO_INCREMENT,
  `users_online-identif` varchar(200) NOT NULL,
  `users_online-ip` varchar(50) NOT NULL,
  `users_online-guest` int(1) NOT NULL,
  `users_online-user` int(11) NOT NULL,
  `users_online-browser` varchar(200) NOT NULL,
  `users_online-date` datetime NOT NULL,
  `users_online-url` varchar(200) NOT NULL,
  `users_online-href` varchar(200) NOT NULL,
  `users_online-ref` varchar(200) NOT NULL,
  PRIMARY KEY (`users_online-id`),
  UNIQUE KEY `users_online-identif` (`users_online-identif`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;


і код:

    $mysql->query("
            INSERT INTO `users_online` (
                `users_online-id`,
                `users_online-identif`,
                `users_online-ip`,
                `users_online-user`,
                `users_online-browser`,
                `users_online-date`,
                `users_online-url`,
                `users_online-href`,
                `users_online-ref`
            ) VALUES (
                NULL,
                '".func_getIP()."_".$session."'
                '".func_getIP()."',
                '".$GLOBAL_user['users_id']."',
                '".$agent."',
                NOW(),
                '".$GLOBAL_online_save."',
                '".$_SERVER['REQUEST_URI']."',
                '".$_SERVER['HTTP_REFERER']."'
            )
            ON DUPLICATE KEY 
                UPDATE `users_online-user` = '".$GLOBAL_user['users_id']."',`users_online-date` = NOW(),`users_online-url` = '".$_SERVER['REQUEST_URI']."';
        ");

а тут помилка: Column count doesn't match value count at row

10

Re: Mysql

ой. вибачте, знайшов помилку. проста неуважність

11

Re: Mysql

funivan написав:

Як це немає оператора or???

Koala особисто для мене такі варіанти незручні)

То була пятниця і я щось глючив. Завжи користуюсь || тому забув за синоніми.

12

Re: Mysql

funivan написав:

Як це немає оператора or???

Koala особисто для мене такі варіанти незручні)

Незручні - так. Але чи неправильні?

13

Re: Mysql

Незручні - так. Але чи неправильні?

Ну з точки зору синтаксису все ок, але якби ми всі користувались принципом:
- компілятор не видає помилок значить код норм - було б відстій (моя думка)
В даному випадку не прикольно читати і шукати значки || якщо запит буде великий (розростеться на багато рядків)
В загалі кожному своє але я не рекомендую так робити.

14

Re: Mysql

Робити таким чином - не дуже добра ідея.
По-перше, mysql_query поверне false у разі будь-якої помилки. А це може призвести до випадків, коли перша операція не була успішною за незапланованих причин, тому я б все одно знайшов інший метод зробити такий вибір.

По-друге, коли я бачу mysql_* у 2015 році - хочеться ридати вголос.

Подякували: koala1

15

Re: Mysql

Підскажіть помилку, неможу видалити з бази вибрані за допомогою селект рядки:

Прихований текст
// Connect to server and select databse.
mysql_connect("$host", "$username", "$password")or die("cannot connect"); 
mysql_select_db("$db_name")or die("cannot select DB");

$sql="SELECT * FROM $tbl_name";
$result=mysql_query($sql);

$count=mysql_num_rows($result);
?>

<table width="400" align="center" border="0" cellspacing="1" cellpadding="0">
<tr>
<td><form name="form1" method="post" action="">
<table width="400" border="0" cellpadding="3" cellspacing="1" bgcolor="#CCCCCC">
<tr>
<td bgcolor="#FFFFFF">&nbsp;</td>
<td colspan="4" bgcolor="#FFFFFF"><strong>Delete multiple rows in mysql</strong> </td>
</tr>
<tr>
<td align="center" bgcolor="#FFFFFF">#</td>
<td align="center" bgcolor="#FFFFFF"><strong>Id</strong></td>
<td align="center" bgcolor="#FFFFFF"><strong>Імя</strong></td>
<td align="center" bgcolor="#FFFFFF"><strong>Прізвище</strong></td>
<td align="center" bgcolor="#FFFFFF"><strong>Вік</strong></td>
<td align="center" bgcolor="#FFFFFF"><strong>Стать</strong></td>
</tr>

<?php
while($rows=mysql_fetch_array($result)){
?>

<tr>
<td align="center" bgcolor="#FFFFFF"><input name="checkbox[]" type="checkbox" id="checkbox[]" value="<? echo $rows['id']; ?>"></td>
<td bgcolor="#FFFFFF"><? echo $rows['id']; ?></td>
<td bgcolor="#FFFFFF"><? echo $rows['name_client']; ?></td>
<td bgcolor="#FFFFFF"><? echo $rows['lastname_client']; ?></td>
<td bgcolor="#FFFFFF"><? echo $rows['old_client']; ?></td>
<td bgcolor="#FFFFFF"><? echo $rows['sex_client']; ?></td>
</tr>

<?php
}
?>

<tr>
<td colspan="5" align="center" bgcolor="#FFFFFF"><input name="delete" type="submit" id="delete" value="Delete"></td>
</tr>

<?php

// Check if delete button active, start this 
if($delete){
for($i=0;$i<$count;$i++){
$del_id = $checkbox[$i];
$sql = "DELETE FROM $tbl_name WHERE id='$del_id'";
$result = mysql_query($sql);
}
// if successful redirect to delete_multiple.php 
if($result){
echo "<meta http-equiv=\"refresh\" content=\"0;URL=login_success.php\">";
}
}
mysql_close();
?>

</table>
</form>
</td>
</tr>
</table>

Дякую


ПЕРЕНЕСЕНО : http://replace.org.ua/topic/4418/

16

Re: Mysql

andrzej прочитайте правила форумі, оформіть нову тему, візьміть код у тег code для того що б всім нам було зручно його читати
Напишіть у чому проблема і як ви старались її вирішити, які помилки видає система

і дальше ми вам залюбки допоможемо

p.s. Даю вам трохи часу виправити своє повідомлення і перенести його у нову тему, так як ваше повідомлення не стосується даної теми ;)

Подякували: andrzej1