如何检查 var 是不是存在于数据库列中,如果不存在则不执行任何操作
Posted
技术标签:
【中文标题】如何检查 var 是不是存在于数据库列中,如果不存在则不执行任何操作【英文标题】:How do I check if var exists in database column and do nothing if it doesn't如何检查 var 是否存在于数据库列中,如果不存在则不执行任何操作 【发布时间】:2010-12-19 23:28:36 【问题描述】:嗨,我是 mysql 的新手,我希望我想做的事情很容易。当在对应于 $imgFile 的标题列下的行星表中有一个条目时,下面的 sql 有效。我遇到的问题是并非我所有的 $imgFiles 都在数据库中。因此,当出现这种情况时,第 3 行 $caption=mysql_result($data, '0')
会抛出此错误:
警告:mysql_result() [function.mysql-result]:无法跳转到第 3 行 /home/drawapl1/public_html/planet.php 中 MySQL 结果索引 3 的第 0 行
如何更改它,使其仅在 $imgFile 存在的地方设置 $caption?
$retrieveCaption="SELECT caption from planets where image='$imgFile'";
$data=mysql_query($retrieveCaption);
$caption=mysql_result($data, '0');
echo $caption;
【问题讨论】:
到目前为止,您已经提出了 9 个问题。是时候学习格式化代码了。 很抱歉您不喜欢这种格式。如果你能指出我哪里出错了,也许我可以改进。我对编码还很陌生,但最近开始更多地作为一种爱好。 他在本网站的问题/答案中谈论将代码格式化为代码示例。您可以通过选择您的代码示例然后点击编辑器中的
按钮来做到这一点。
【参考方案1】:
您可以使用mysql_num_rows()
捕获空结果集。
if( mysql_num_rows($data) == 0 )
// No results returned
或者使用在这种情况下不会发出警告的函数,例如mysql_fetch_assoc()
。
$row = mysql_fetch_assoc($data);
if( $row )
$caption = $row['caption'];
else
$caption = "Default";
【讨论】:
【参考方案2】:Yoy 可以询问 MySQL 是否找到任何东西:
if ( 0 < mysql_num_rows($data) ) // results
如果没有结果,不要使用mysql_result。
另外:'0' 想成为一个 0(一个 int 而不是一个字符串)。
另外:你应该将所有输入转义到 SQL 查询中,所以你应该转义 $imgFile
【讨论】:
以上是关于如何检查 var 是不是存在于数据库列中,如果不存在则不执行任何操作的主要内容,如果未能解决你的问题,请参考以下文章