2017-06-27 37 views
-2

請原諒我,如果我發佈了錯誤的地方,或者在某個地方存在對此問題的答案 - 我一直在尋找答案,但我沒有找到答案。在PHP中嵌套三級引用遇到問題

我echo語句內嵌套的報價和它給我的悲傷(500錯誤)

此代碼(雙和單引號的各種排列):

<form action='update.php' method='post'> 
<p> 
    <input type='hidden' name='log_id' value='<?php echo $row["log_id"]; ?>'/> 
    <input type='time' name='time_back' id='time_back'> 
    <input type='submit' value='Update'> 
</p> 
</form> 

此代碼似乎並沒有工作:

<?php 
if($row["time_back"] == '00:00:00') 
{ echo "<form action='update.php' method='post'> 
<p> 
    <input type='hidden' name='log_id' value='<?php echo $row[\"log_id\"]; ?>'/> 
    <input type='time' name='time_back' id='time_back'> 
    <input type='submit' value='Update'> 
</p> 
</form>";} 
else { echo $row["time_back"]; } 
?> 

我只是不能看到我在這裏得到錯誤。我已經把各種各樣的東西倒在嵌套的引號上,我仍然無法弄清楚。

+3

你不需要打開php標籤value ='<?php echo $ row [\「log_id \」]; ?>因爲它已經在php塊 – sumit

+0

我也會建議尋找模板引擎,以瞭解如何從表示中分離邏輯 – Asciiom

+2

當您不使用語法高亮的文本編輯器時會發生類似情況。這應該是你的第一步。 – Mike

回答

2

要做的最好的事情(如果你不打算使用模板引擎)停止打印這麼多的HTML與回聲。即關閉並重新打開PHP代碼,從而使最正常打印的HTML的是PHP標籤之外:

<?php 
if($row["time_back"] == '00:00:00') 
{ 
?> 
<form action='update.php' method='post'> 
<p> 
    <input type='hidden' name='log_id' value='<?php echo $row['log_id']; ?>' /> 
    <input type='time' name='time_back' id='time_back'> 
    <input type='submit' value='Update'> 
</p> 
</form> 
<?php 
} 
else { echo $row["time_back"]; } 
?> 

退而求其次,關閉引號和串聯,然後重新打開它們:

<?php 
if($row["time_back"] == '00:00:00') 
{ echo "<form action='update.php' method='post'> 
<p> 
    <input type='hidden' name='log_id' value='" . $row['log_id'] . "' /> 
    <input type='time' name='time_back' id='time_back'> 
    <input type='submit' value='Update'> 
</p> 
</form>"; 
} 
else { echo $row["time_back"]; } 
?> 
+0

完全同意第一種選擇是可取的。爲了擴大這一點,重要的是要知道你可以**在PHP中保留一個有條件的'open'(如上)('<?php if(){?>')。然後,您可以正常編寫HTML,並在再次打開PHP標記後關閉條件(''。這有助於分離邏輯,甚至提供程序更好的語法突出顯示,如上:) –

0

如同在評論中提到,不要打開一個新的PHP標籤(即<?php)。相反,只要結束字符串文字(即以"終止)和concatenate來自變量的值(即數組元素:$row['log_id'])。

<?php 
if($row["time_back"] == '00:00:00') 
{ echo "<form action='update.php' method='post'> 
<p> 
    <input type='hidden' name='log_id' value='". $row["log_id"] ."'/> 
    <input type='time' name='time_back' id='time_back'> 
    <input type='submit' value='Update'> 
</p> 
</form>";} 
else { echo $row["time_back"]; } 

看到它在this playground example演示。

0

在你想要的格式

<?php 
if($row["time_back"] == '00:00:00') 
{ echo "<form action='update.php' method='post'> 
<p> 
    <input type='hidden' name='log_id' value='<?php echo $row[\"log_id\"]; ?>'/> 
    <input type='time' name='time_back' id='time_back'> 
    <input type='submit' value='Update'> 
</p> 
</form>";} 
else { echo $row["time_back"]; } 
?> 

你有一個嵌套的PHP語句 - 你還是你在開始聲明的一個範圍內工作,並且實際上是尚未完成的「迴響」函數中。有很多方法可以將您的HTML與PHP合併,但其中一個最易讀的 是拼接運算符.

所以,用這種方法,校正將是在這條線

<input type='hidden' name='log_id' value='<?php echo $row[\"log_id\"]; ?>'/> 

你反而會寫

<input type='hidden' name='log_id' value='" . $row["log_id"] . "'/> 

請注意,我們關閉開口報價",串聯,輸出我們的PHP (我們不需要PHP標籤或回聲,因爲我們已經在回聲函數中,我們只需要連接我們想要合併到HTML中的字符串),然後再次連接並重新打開"

希望有幫助!