Как я могу объединить две таблицы по своему уникальному идентификатору? [Дубликат]

Для тех, кто наткнулся на этот ответ от Google, позвольте мне попытаться разобраться:

Как заметил Аджай, есть два события, которые увольняются для печати, но они не очень хорошо поддерживаются; насколько я читал, они поддерживаются только в браузерах Internet Explorer и Firefox (6+). Эти события - window.onbeforeprint и window.onafterprint, которые (как и следовало ожидать) будут срабатывать до и после задания печати.

Однако, как указано в ссылке Джо ( https://stackoverflow.com/a/9920784/578667 ), это не совсем так, как это реализовано во всех случаях. В большинстве случаев оба события срабатывают перед диалогом; в других случаях выполнение сценария может быть остановлено во время диалога печати, поэтому оба события могут срабатывать одновременно (после завершения диалога).

Для получения дополнительной информации (и поддержки браузера) для этих двух событий :

https://developer.mozilla.org/en-US/docs/DOM/window.onbeforeprint

https: // developer.mozilla.org/en-US/docs/DOM/window.onafterprint

Короткий ответ: если вы надеетесь помешать потоку печати, не делайте этого. Если вы надеетесь запустить код после печати, он не будет работать, как вы хотите; ожидать плохой поддержки браузера и стараться грамотно деградировать.

83
задан Taryn 22 March 2017 в 17:08
поделиться

5 ответов

Нет, вы не можете использовать mysql и mysqli вместе. Они представляют собой отдельные API-интерфейсы, и создаваемые ими ресурсы несовместимы друг с другом.

Однако есть mysqli_close.

53
ответ дан Explosion Pills 16 August 2018 в 05:22
поделиться
  • 1
    Хотя вам все равно не нужно закрывать соединение; объекты очищаются, когда они больше не ссылаются нигде. (Не уверен, что это делают старые старые ресурсы, но объекты могут фактически использовать RAII в незначительной степени.) – cHao 6 July 2013 в 00:54
  • 2
    @cHao не только это, но PHP закроет любые открытые соединения MySQL при выходе сценария – Explosion Pills 6 July 2013 в 00:56
  • 3
    Но не всегда, к моему опыту, поэтому мы всегда размещаем закрытие в нижней части файла. – RationalRabbit 31 December 2017 в 22:23

с моей стороны, я думаю, что вы можете, но вам придется делать файлы для подключения к базе данных, потому что mysqli_* будет принимать только mysqli_connect, и поэтому с помощью mysql_*

вы можете попробовать при обучении PDO Better

-1
ответ дан Ali Almoullim 16 August 2018 в 05:22
поделиться

MySQLi намного безопаснее, чем MySQL, который в любом случае устарел. Вот почему вы должны придерживаться MySQLi, а также вы не можете смешивать их, поскольку они оба разные.

-1
ответ дан duskwuff 16 August 2018 в 05:22
поделиться

Просто, чтобы дать общий ответ здесь обо всех трех API MYSQL со ссылкой:

Вы не можете смешивать ни одно из трех ( mysql_* , mysqli_* , PDO ) API MYSQL от PHP вместе, он просто не работает. Это даже в справочнике FAQ :

Невозможно смешать расширения. Например, передача mysqli в PDO_MySQL или ext / mysql не будет работать.


Вам нужно использовать тот же API MySQL и связанные с ним функции, от подключения к запросам .

10
ответ дан Funk Forty Niner 16 August 2018 в 05:22
поделиться
  • 1
    Некоторый парень пытался сказать мне сегодня, что у них нет проблем / ошибок при смешивании mysql_real_escape_string() с остальной частью их кода PDO. Есть ли что-то, что я не получил здесь в свое время, работая с этими различными API-интерфейсами? Я здесь невежественный? Это выражение для "теперь удалено" вопрос stackoverflow.com/q/34209127 доступен только для просмотра 10K +, если кто-нибудь задается вопросом. Это по отношению к $stmt3->execute(array('classID' => $_POST['class'],'studentID' => mysql_real_escape_string($substr))). Я что-то упустил? – Funk Forty Niner 10 December 2015 в 20:05
  • 2
    @ Fred-ii- Вы правы :) Чтение руководства показывает, что вы правильные . Вероятно, что mysql_real_escape_string() будет молча попытаться установить соединение с параметрами по умолчанию , которые затем работали для OP. Поэтому он просто установил соединение, чтобы получить набор символов. Таким образом, OP имеет 2 соединения – Rizier123 10 December 2015 в 20:49
  • 3
    Если бы ОП, по крайней мере, сказал мне / нам, что у них, вероятно, было две отдельные связи, я бы, наверное, согласился; они решили иначе. Тем не менее, я до сих пор не вижу, как это будет работать. Если это произойдет, я смущен. – Funk Forty Niner 10 December 2015 в 20:53
  • 4
    @ Fred-ii- Смотрите: link_identifier Он будет использовать настройки соединения по умолчанию, которые он получает с помощью ini_get(). Поэтому он, вероятно, работает только для OP с настройками по умолчанию. Я бы просто оставил его и получил новый кофе (☕☕☕). – Rizier123 10 December 2015 в 20:56
  • 5
    Вы могли бы добавить что-то о sqlsrv_query(). Я только что закрыл вопрос здесь stackoverflow.com/q/41263771 – Funk Forty Niner 21 December 2016 в 14:40

Технически вы можете использовать столько отдельных соединений, сколько хотите, в то время как ваша проблема вызвана простой опечаткой - вы не можете использовать ресурсы только из одного расширения с функциями из другого, что вполне очевидно.

Однако вам следует избегать нескольких подключений от одного и того же сценария, независимо от одного API или другого. Поскольку это будет обременять ваш сервер базы данных и исчерпывать его ресурсы. Итак, хотя технически вы можете, вы не должны смешивать разные расширения в своем коде, за исключением короткого периода рефакторинга.

2
ответ дан Your Common Sense 16 August 2018 в 05:22
поделиться
  • 1
    Хотя это, вероятно, хорошая идея, но по этой причине был разработан пул соединений. Когда у вас есть несколько веб-запросов, попавших на веб-сервер, вы не можете легко использовать одно и то же соединение, поэтому вы открываете новое соединение. Объединение пулов экономит накладные расходы на сервере приложений и базе данных. – Doug 9 July 2015 в 14:43
Другие вопросы по тегам:

Похожие вопросы: