2013-03-28 9 views
9

मैं इस सरल एसक्यूएल क्वेरी के साथ एक समस्या हो रहा है:पीएचपी स्ट्रिंग चर कहां खंड MySQL

<?php 
require_once('../../Connections/tohoshows.php'); 

$show ='gothaf'; 

mysql_select_db($database_tohoshows, $tohoshows); 
$query_getShows = "SELECT * FROM toho_shows WHERE toho_shows.show =' ". $show. " '"; 
$getShows = mysql_query($query_getShows, $tohoshows) or die(mysql_error()); 
$row_getShows = mysql_fetch_assoc($getShows); 
$totalRows_getShows = mysql_num_rows($getShows); 

mysql_free_result($getShows); 
?> 

जब मैं इस

$query_getShows = "SELECT * FROM toho_shows WHERE toho_shows.show ='gothaf'"; 

तरह कहां खंड में सीधे स्ट्रिंग का उपयोग मैं एक मिल परिणाम। जब मैं चर का उपयोग करता हूं, तो मुझे कोई डेटा नहीं मिलता है! मैं एक नौसिखिया हूं और मैं यह नहीं समझ सकता कि मैं क्या गलत कर रहा हूं। किसी भी सहायता की सराहना की जाएगी। धन्यवाद!

+2

[** 'mysql_ *' नए कोड में कार्य करें, का उपयोग नहीं करते **] (http://bit.ly/phpmsql)। वे अब बनाए रखा नहीं जा रहे हैं [और आधिकारिक तौर पर बहिष्कृत हैं] (http://j.mp/XqV7Lp)। [** लाल बॉक्स **] (http://j.mp/Te9zIL) देखें? इसके बजाय [* तैयार कथन *] (http://j.mp/T9hLWi) के बारे में जानें, और [पीडीओ] (http://php.net/pdo) या [MySQLi] का उपयोग करें (http://php.net/ mysqli) - [यह आलेख] (http://j.mp/QEx8IB) आपको यह तय करने में मदद करेगा। – Kermit

उत्तर

17

आप कोई तारीख हो रही है क्योंकि आप उद्धरण betwee अतिरिक्त जगह है,

$query_getShows = "SELECT * FROM toho_shows WHERE toho_shows.show =' ". $show. " '"; 
                    ^HERE ^

जो तब

SELECT * FROM toho_shows WHERE toho_shows.show =' gothaf ' 

में पार्स किया जाएगा उसे निकालें और उसे काम करेंगे

$query_getShows = "SELECT * FROM toho_shows WHERE toho_shows.show ='". $show. "'"; 

एक sidenote के रूप में, क्यू यूरी SQL Injection के साथ कमजोर है यदि मान (एस) चर के बाहर से आया था। कृपया इसे रोकने के तरीके के बारे में जानने के लिए नीचे दिए गए लेख पर एक नज़र डालें। PreparedStatements का उपयोग करके आप मूल्यों के चारों ओर सिंगल कोट्स का उपयोग करने से छुटकारा पा सकते हैं।

+0

आपके उत्तर के लिए धन्यवाद! मैंने बीच में कोई जगह नहीं की है, लेकिन मुझे अभी भी कोई डेटा नहीं मिला है। –

+0

इस 'echo $ query_getShows;' –

+0

के परिणाम पोस्ट करने के बाद भी आपको इस दृष्टिकोण का उपयोग करने पर भी विचार नहीं करना चाहिए, @Akis, तैयार कथनों का उपयोग करना वास्तव में आसान है और फिर भी यह सिस्टम महत्वपूर्ण है। एसक्यूएल इंजेक्शन – Jonast92

संबंधित मुद्दे