2014-11-21 4 views
0

У меня есть эта база данных, которую я создал с клиентом phpMyAdmin. Конкретные запросы, такие как SELECT * FROM TagData LIMIT 0,10, в моем PHP-коде работают отлично. Но когда я добавляю шаблон под запрос, например SELECT * FROM TagData WHERE Device_Name LIKE 'Valve%' LIMIT 0,10, он не работает. Странно то, что тот же самый SQL работает отлично в инструменте phpMyAdmin.Запросить базу данных MySQL

Это, как я бегу мой запрос в PHP:

$query="SELECT * FROM TagData WHERE Device_Name LIKE 'Valve%' LIMIT 0,10"; 
$tmpResult=mysql_query(sprintf($query)); 

У меня есть сильное ощущение, что кавычки в строке $ запроса являются проблемой. Может кто-то, пожалуйста, объясните мне, что я делаю неправильно, и почему я делаю это неправильно.

Результат mysql_error() дает это:

Запрос был пустой

+0

PhpMyAdmin является базой данных ** клиент ** не является базой данных. Не путайте его с MySQL. – Quentin

+3

Почему 'sprintf'? Вы читали, что делает [sprintf] (http://php.net/sprintf)? –

+0

«не работает» не является «явным заявлением о проблеме». Определить «не работает». Проверьте возвращаемое значение 'mysql_query'. Используйте 'mysql_error'. Посмотрите на фактический запрос, который вы передаете 'mysql_query' (т. Е. Возвращаемое значение' sprintf' (которое вы все равно не должны использовать)). – Quentin

ответ

0

Вам не нужно Sprintf, когда вы не вставляйте какие-либо пользовательские параметры. Просто оставьте это необработанным.

Ваш запрос был emtpy, потому что строка, которую вы дали sprintf, была неверной, а sprintf вернул null/пустую строку.

Вам нужны параметры для установки в sprintf, иначе это бесполезно. И% является управляющим символом для sprintf, чтобы избежать этого, вам придется помещать %% вместо%, но мой совет здесь неактивен, поскольку у вас нет параметров, просто не используйте его!

Чтобы сделать работу запроса просто запустите его сырым

$query= "SELECT * FROM TagData WHERE Device_Name LIKE 'Valve%' LIMIT 0,10"; 
$tmpResult = mysql_query($query); 

А теперь, пожалуйста, посмотрите, что Sprintf на самом деле делает:

http://php.net/manual/en/function.sprintf.php

Однако, пожалуйста, подумайте об обновлении до MySQLi или PHP/Расширение PDO, потому что класс MySQL устарел, устарел, неспособен, медленный и будет удален из PHP в будущем.

http://php.net/manual/en/book.mysqli.php

http://php.net/manual/en/book.pdo.php

+0

Бегает как шарм. Большое спасибо за ответ и информацию! – ArabCheese

Смежные вопросы