【问题标题】:Select column FROM table_name WHERE username=$_SESSION['username'] not working选择列 FROM table_name WHERE username=$_SESSION['username'] 不起作用
【发布时间】:2018-03-03 18:07:13
【问题描述】:

我正在尝试从 users 表中取出 url 并将其插入到 images 表的 url 中> 来自当前登录的用户。此代码无法在 images 表中插入 url

$uploaduser = $_SESSION["username"];
$selectuser = mysqli_query("SELECT * FROM users WHERE username=$uploaduser",$db1);
$row = mysqli_fetch_array($selectuser);
$pic = $row['url'];

$sql = "INSERT INTO images (image1, image_text1, uploaduser, url, date) VALUES ('$image1', '$image_text1' , '$uploaduser','$pic','$date')";

mysqli_query($db1, $sql);

【问题讨论】:

  • 这取决于username是varchar字段还是numeric
  • 这也可以通过正确使用准备好的语句来避免。
  • 链接($db1)应该是mysqli_query()的第一个参数。
  • @Syscall ,当我不包含“url”列时,该代码有效。现在,只是为了测试,我尝试输入 $pic=$_SESSION ['username'] 并且效果很好。

标签: php mysql sql mysqli


【解决方案1】:

第一个参数应该是链接 ($db1)。 然后,除非用户名是数字数据类型,否则应使用单引号将值括起来。

试试这个:

$selectuser = mysqli_query($db1, "SELECT * FROM users WHERE username='$uploaduser'");

重要提示:您应该查看How can I prevent SQL injection in PHP? 以确保您的查询安全。

【讨论】:

  • 感谢@Syscall,这对我很有帮助!做得好!我整天都在尝试这个...... :)
【解决方案2】:

你应该使用准备好的语句,不管它看起来像什么,

$selectuser = mysqli_query("SELECT * FROM users WHERE username=$uploaduser",$db1);

这里有一个错误。 mysqli_query 期望参数 1 是连接变量,参数 2 作为查询字符串,而不是将第二个参数作为连接变量,将第一个参数作为查询字符串。

同时尝试连接变量,而不是直接将变量传递到查询字符串中。

代替

$sql = "INSERT INTO images (image1, image_text1, uploaduser, url, date) VALUES ('$image1', '$image_text1' , '$uploaduser','$pic','$date')";

试试

$sql = "INSERT INTO images (image1, image_text1, uploaduser, url, date) VALUES ('".$image1."', '".$image_text1."' , '".$uploaduser."','".$pic."','".$date."')";

希望这会有所帮助。

【讨论】:

    猜你喜欢
    • 2014-09-20
    • 1970-01-01
    • 1970-01-01
    • 2019-12-15
    • 2011-06-15
    • 2015-09-01
    • 1970-01-01
    • 2017-02-14
    • 1970-01-01
    相关资源
    最近更新 更多